初始化与清理
一、构造器
定义:(1)与类名相同(2)无返回值(且不用void标识)(3)分为有参构造器和无参构造器两种。
1. 构造器初始化
<u>1.1 java程序初始化遵循的3个原则:</u>
(1)静态对象(变量)优先于非静态对象(变量)。注意:静态对象只初始化一次。
(2)父类优先于子类进行初始化。
(3)按照成员变量的顺序进行初始化。(即使变量定义散布于方法定义之中,他们仍然在任何方法(包括构造函数)被调用之前先初始化)
1.2 初始化顺序:
父类静态变量、父类静态代码块------》子类静态变量、子类静态代码块。
----》父类非静态变量、父类非静态代码块、父类构造函数
-----》子类非静态变量、子类非静态代码块、子类构造函数
1.3 总结一下对象的创建过程(假设有个名为Dog的类):
①首次创建对象时,java解释器查找类路径,以定位Dog.class文件。
②然后载入Dog.class,有关静态初始化的内容都会执行(静态初始化只在Class对象首次加载的时候进行一次)。
③用new Dog()创建对象时,首先在堆上为Dog对象分配足够的存储空间。
④这块存储空间会被清零,Dog对象中的所有基本类型数据都设置成了默认值。
⑤执行所有出现于字段定义处的初始化动作。
⑥执行构造器。
2、数组初始化
2.1 java中数组的两种定义:
<u>“[]”位置可置于变量前(紧跟前一个关键词)或变量后(紧跟后一个变量)。</u>
①int[] a1; ②int a1[];
定义时初始化:int[] a1={1,2,3,4,5,6};
数组所能使用的最大下标数:length-1
数组的创建是在<u>运行时刻</u>进行的
2.2 数组名之间的复制-----仅仅复制了一个引用(即改变指针位置 类似于 C语言中的指针)
3、方法的重载 与 方法的覆盖(重写)
3.1 方法的重载:是指一个类中定义了多个同名方法。有<u>不同的参数个数</u>、<u>不同的参数类型</u>或者<u>不同的参数顺序</u>。
注意:不能通过方法的访问权限,返回值类型和抛出的异常类型来进行重载。
另外,如果基类的访问权限为private,对于继承来说,就不能在其子类中进行重载,即使子类也定义了一个同名的方法,则只是一个新方法,不会达到重载的效果。
3.2 方法的覆盖:反应的是子类和父类之间的关系。子类覆盖父类的方法并对其进行重写,以达到不同作用。
注意:子类的覆盖方法必须要和父类的被覆盖方法有相同的方法名和参数,相同返回值类型,相同异常类型,且不能为private类型,(若父类为private类型,子类即使有同名方法,则只是一个普通方法而已,并没有对其进行覆盖)。
4、this关键字
this关键字只能用于方法内部,表示对“调用方法的那个对象”的引用,(即只有当需要明确指出对<u>当前对象的引用</u>时,才需要使用this关键字),如果在方法内部调用同一个类的另一个方法,就不必使用this,直接调用即可。
5、static
①类名.方法
②static方法就是没有this的方法,在static方法的内部不能调用非静态方法。
6、关于java中的垃圾回收
①对象可能不被垃圾回收。
②垃圾回收并不等于“析构“。
③垃圾回收只与内存有关。
网友评论