第六章小结

来源:互联网 发布:完美者解码mac 编辑:程序博客网 时间:2024/06/05 19:33

1)子类覆盖父类总结.


A. 子类方法的名称、参数名和返回类型必须与父类方法的名称、参数名和

       返回类型一致。
B. 子类方法不能缩小父类方法的访问权限。
C. 子类方法不能抛出比父类方法更多的异常,子类方法抛出的异常必须和

       父类方法抛出的异常相同或者是在方法抛出的异常类的子类。
D. 方法覆盖只存在于子类和父类(包括直接父类和间接父类)之间。在同

       一个类中方法只能被重载,不是覆盖。
E. 父类的静态方法不能被子类覆盖为非静态方法。
F. 子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父

        类的静态方法。
G. 父类的非静态方法不能被子类覆盖为静态方法。
H. 父类的私有方法不能被子类覆盖。
I. 父类的抽象方法可以被子类通过两种途径覆盖:一种是子类实现父类的

抽象方法;另一种是子类重新声明父类的抽象方法,这种方法通常用来扩大该方

        法的访问权限。
J. 父类的非抽象方法可以被覆盖为抽象方法。


2)JAVA语言中,覆盖和重载相同和不同的地方


相同点:
A. 都要求方法同名
B. 都可以用于抽象方法和非抽象方法
不同点:
A. 方法覆盖必须参数一致,重载必须参数不一致。 
B. 方法覆盖要求返回类型一致,而方法重载对此不做限制。
C. 方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类的所有

       方法,包括从父类继承过来的方法。
D. 方法覆盖对方法的访问权限和抛出的异常有特殊要求,而方法重载在这

方面没有任何影响。
E. 父类的一个方法只能被子类覆盖一次,而一个方法在所在的类中可以被

重载多次。

 

总结:
1) 初始化子类对象时,必先初始化父类对象,加载子类时必先加载父类
2) Static程序块,类加载时最先调用
3) 程序执行顺序:static程序块最优先,其次是非static程序块。如果在

子类中有非static程序块,则先执行父类构造函数,再执行非 static程序块,

再执行本类构造函数。

关于构造函数
1)使用new关键字初始类的实例时,必须有相匹配的构造函数。否则编译器报错

,如 new Test(),匹配的是类的无参函数,new Test(1)匹配的是类的 Test

(int i)构造函数。
2)如果一个类没有定义任何构造函数,编译器会自动为该类加上无参函数。如

果一个类有任何一个构造函数,则编译器不会再为该类添加构造函数。