第一章 面向对象的三大基石之一 封装 课程地位 课程介绍 学完本门课程,你能够 掌握面向对象的三大特性:封装、继承、多态 掌握面向接口编程 掌握Java异常处理 学会用面向对象思想来编写程序 相关课程回顾 什么是类? 什么是对象? 类和对象的区别和联系?

本章案例 用封装来拯救小新同学的人品 用构造方法来拯救小新同学的性别 重载构造方法 本章目标 掌握使用封装的方式编写类 掌握为类添加私有属性 掌握方法重载 掌握编写类的构造方法,构造方法重载 预习检查 使用封装有什么好处? 构造方法和实例方法的区别? 构造方法如何重载?

用封装来拯救小新同学的人品 用封装来拯救小新同学的人品 看看是谁恶搞了小新的人品吧。首先我们创建一个学员类,代表学员。小新是学员类的一个对象。 用封装来拯救小新同学的人品 仁兄代码: 用封装来拯救小新同学的人品 可以看出,小新的人品被恶搞了,怎么回事呢? 细心的同学能够看出来,学员类的两个属性都是公有的,可以被随意访问,我们无法控制这些属性的值,这就导致了以上的问题,那么如何解决呢? 这个时候我们就需要用到封装,因为它很好的解决了这个问题。

该看的看,不该看的别看 封装(Encapsulation)就是把不想或者不该告诉别人的东西隐藏起来,把可以告诉别人的公开(隐藏对象的属性和方法的实现细节,只公开对外接口) 具体做法就是把属性私有化,提供公有的方法访问这些属性,在这些公有方法中实现对属性的控制。如下所示 该看的看,不该看的别看 该看的看,不该看的别看 仁兄代码: 封装提供了4种访问控制级别 访问修饰符有以下4个: public 公共的,最高的访问级别,类的public成员所有类的成员都可以访问。

protected 受保护的,类的protected成员只能被该类的成员以及其子类成员访问。还可以被同一个包中其他类的成员访问。 private 私有的,不对外公开,类的private成员只能被该类的成员访问,访问级别最低。 默认,类的成员什么修饰符都没有,又叫包修饰符,只有类本身成员和当前包下类的成员可以访问。

课堂练习 参照教材,改写学员类,增加年龄属性,实现对年龄属性的封装,年龄要求必须大于18周岁。写测试类测试。 小结 封装的具体实现步骤? 修改属性的可见性来限制对属性的访问。 为每个属性创建一对赋值方法和取值方法,用于对这些属性的访问。 在赋值和取值方法中,加入对属性的存取限制。 方法重载在现实生活中随处可见 方法重载在现实生活中随处可见 通过上图我们可以分析得到: 学员被抽象为一个类 。 学员有3个方法,方法名称都是喂养 。 这3个方法的参数各不相同,分别是鹦鹉、猫、狗 。 这3个方法的实现各不相同 。 我们接触过的方法重载 注意上面代码中的println方法,一共有10个,但是方法参数类型各不相同,能够实现不同数据类型数据的控制台打印并换行。再看两个我们学过的方法: 我们接触过的方法重载 上面代码中Math类的两个静态方法max、min,可以传入不同数据类型的两个参数进行取最大值和最小值的操作。

为什么用构造方法 看看谁又恶搞了小新的性别吧。首先我们创建一个学员类,代表学员。小新是学员类的一个对象。 为什么用构造方法 为什么用构造方法 仁兄代码: 为什么用构造方法 可以看出,小新的性别没有了,怎么回事呢? 细心的同学能够看出来,小新的性别属性没有被初始化,这就导致了以上的问题,原因是学员类Student3中的属性太多,调用赋值方法初始化小新同学的属性时很容易遗漏。 那么如何解决呢?这个时候我们就需要用到构造方法,因为它很好的解决了因为属性过多而遗漏初始化的问题。

什么是构造方法 构造方法(constructor)是用来实例化一个类的对象的,我们在实例化类的对象时调用的就是这个类的构造方法,构造方法有如下特点: 构造方法是一个特殊的方法。Java中的每个类都有构造方法,用来初始化该类的一个对象。 构造方法名和类名相同,没有返回类型。 构造方法可以重载。 构造方法只能由new关键字和this()调用,this()只能在构造方法中使用,用来调用其它构造方法,且只能作为构造方法代码体的第一条语句。

什么是构造方法 下面我们看一个小新同学写的构造方法的实例 : 什么是构造方法 下面测试类中使用new关键字实例化对象的过程实际就是调用构造方法的过程,如示例所示: 什么是构造方法 在实例化对象时,我们已经悄然无声的对实例变量进行了初始化,实例变量都被赋予了默认值; 但是大多数情况下我们希望实例变量的值不是默认值,也就是学员的名字不能都叫做小新,那么这个时候我们就需要使用带参数的构造方法了。 使用带参数的构造方法拯救小新同学的性别 使用带参数的构造方法拯救小新同学的性别 下面测试类中调用