Java 复习第五天
封装
- 私有只是封装的一种表现形式
- 封装可以增加代码的健壮性
构造函数
- 对象一建立,就会调用与之对应的构造函数(可以用于对象的初始化工作);
- 当一个类中没有定义构造函数时, 那么系统会默认给该类加入一个空参数的构造方法;
- 当在类中定义了构造函数后,默认的构造函数就会消失;
- 构造函数和在对象一建立就运行, 给对象初始化; 而一般方法是对象调用才运行, 是给对象添加对象具备的功能;
成员变量和局部变量
作用范围
-
成员变量作用于整个类中, 局部变量作用于函数中或者语句中;
-
在内存中的位置:
-
成员变量: 在堆内存中, 因为对象的存在, 才在内存中存在;
-
局部变量: 存在栈内存中 #### 其他区别 成员变量都有默认值, 在不赋值的情况下也可以参与运算.
匿名对象
- 匿名对象使用方式之一: 当对对象的方法只调用一次时, 可以用匿名对象来完成, 这样写比较优化
- 如果对一个对象进行多个成员调用, 必须给这个对象起个名字
- 匿名对象可以作为实际参数进行传递
构造代码块
-
作用:
- 给对象进行初始化
-
特点:
- 对象一建立就运行, 而且优先于构造函数执行;
-
和构造函数的区别:
- 构造代码块是给所有对象进行统一初始化
- 构造函数是给对应的对象进行初始化
- 构造代码块中定义的事不同对象共性的初始化内容
-
构造代码块示例:
1 2 3 4 5 6 7 8 9
class User{ private String name; //以下'{}'和其中的内容为构造代码块 { private int id; } }
this 关键字:
- this 代表的是本类对象, 即 this 所在函数所属对象的引用
- this 语句:
java this(xxx);
作用: this()用于构造函数之间的调用 特性: this() 必须在第一行,以保证在执行任何动作前,对象已经完成了初始化。 - 注意: 以下代码会进入死循环状态, 构造函数之间不可以循环调用
|
|
this 和 super 关键字的特点:
-
this 和 super 关键字不能再 static 类型的方法或 static 的代码块中
-
原因 1: 加载顺序: static 类型的方法/代码块/方法会先于类加载, 所以当前时间点类对象并未初始化完成,所以无法调用
-
原因 2: 无法再静态代码中加载非静态的关键字