面向对象_上
面向对象
一、属性(成员变量)和局部变量的区别
相同点
- 定义变量的格式:数据类型 变量名 = 变量值;
- 先声明,后使用
- 变量都有其对应的作用域
不同点
-
在类中声明的位置不同
属性:直接定义在类的一对 { } 内
局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
-
关于权限的修饰符不同
属性:可以在声明属性时,指明其权限,使用权限修饰符
局部变量:不可使用权限修饰符
-
默认初始化值的情况:
属性:类的属性,根据其类型都有默认的初始化值
整型(byte、short、int、long):0
浮点型(float、double):0.0
字符型(char):0 或 '\u0000'
布尔型(boolean):false
引用数据类型(类、数组、接口):null
局部变量:没有默认初始化值
特别地:形参在调用时,我们赋值即可
-
在内存中加载的位置
属性:加载到堆空间中(非 static )
局部变量:加载到栈空间
二、方法的重载
重载的定义
- 在同一个类中,允许存在一个以上的同名方法,只要他们参数个数或者参数类型不同即可(两同一不同:同一个类,参数个数不同或参数类型不同)
三、可变个数形参的方法
-
JDK 5.0 新增
-
可变个数形参的格式: 数据类型 ... 变量名
public void show(String ... strs){ } -
当调用可变个数形参的方法时,传入的参数个数可以是 0,1,2...
-
可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载
-
可变个数形参的方法与本类中方法名相同,形参类型相同的数组之间不构成重载(不能共存)
-
可变个数形参在方法的形参中,必须声明在末尾
public void show(int i,String ... strs){ } /* public void show(String ... str, int i){ } */ //Vararg parameter must be the last in the list -
可变个数形参在方法的形参中,最多只能声明一个可变形参
四、方法的形参传递的机制
4-1、形参与实参
- 形参:方法定义时,声明的小括号内的参数
- 实参:方法调用时,时间传递给形参的数据
4-2、值传递机制
- 如果参数是基本数据类型,此时实参赋给形参的是实参真实存在的数据
- 如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值
五、递归方法
- 方法的递归包含了一种隐式的循环,它会重复的执行某段代码,但这种重复执行无须循环控制
- 递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似死循环
六、封装性
封装性的体现
其一:我们将类的属性私有化(private),同时,提供公共(public)的方法来获取(getXxx)和设置(setXxx)此属性的值。
权限修饰符
-
Java规定的4种权限(从小到大排列):private、缺省、protected、public
-
4种权限可以用来修饰类及类的内部结构:属性、方法、构造器、内部类
-
具体的,4种权限可以用来修饰类的内部结构:属性、方法、构造器、内部类
修饰类的话:只能是 缺省 或 public
构造器
构造器的作用:
- 创建对象
- 初始化对象
说明:
- 如果没有显式的定义类的构造器的话,则系统默认提供一个空参的构造器
- 定义构造器的格式:权限修饰符 类名(形参列表)
- 一个类中定义的多个构造器,彼此构成重载
- 一旦我们显式的定义了类的构造器之后,系统不再提供默认的空参构造器
- 一个类中,至少会有一个构造器
总结属性赋值的先后顺序:
1 - 2 - 3 - 4
- 默认初始化
- 显式初始化
- 构造器中赋值
- 通过“对象.方法” 或 “对象.属性” 的方式赋值
JavaBean
所谓JavaBean , 是指符合以下标准的Java类:
- 类是公共的
- 有一个无参的公共的构造器
- 有属性,且有对应的get、set方法
七、this
this关键字的使用:
this 可以用来修饰:属性、方法、构造器
this修饰属性和方法
this 理解为:当前对象 或 当前正在创建的对象
格式:this.属性 this.方法
this调用构造器
- 我们在类的构造器中,可以显式的使用“this(形参列表)”方式,调用本类中指定的其他构造器
- 构造器中不能通过“this(形参列表)”方式调用自己
- 如果一个类中有 n 个构造器,则最多有 n-1 个构造器中使用了“this(形参列表)”
- 规定:“this(形参列表)”必须声明在当前构造器的首行
- 构造器内部:只能声明一个“this(形参列表)”,用来调用其他构造器

浙公网安备 33010602011771号