第5章 继承

来源:互联网 发布:java 补全位数 编辑:程序博客网 时间:2024/05/04 20:31

5.1 类、超类和子类


 1、JAVA中,所有的继承都是公有继承

 2、超类即父类,一般将通用的方法放在超类中,将具有特殊用途的方法放在子类中。

 3、覆盖超类中的方法。要求函数名、参数、都一致 5.0版之前要求返回类型也必须一致,6.0版本允许子类的返回类型为超类的返回类型的子类型。而且子类的方法不能低于超类方法的可见性。   

 4、若要调用父类对应方法,则使用super关键字。

 5、 使用super调用父类构造函数的语句必须是子类构造函数的第一句

 6、如果子类的构造器没有显式的调用超类的构造器,则将自动的调用超类默认的构造器(即没有参数那个) 。而如果父类没有不带参数的构造函数,而且子类构造函数中又没有显示调用父类的其他构造函数,则编译出错。

 7、一个对象变量可以引用多种实际类型的现象被称为 多态 ,在运行时能够自动地选择调用哪个方法的现象被称为动态绑定

 (1)继承层次

  由一个公共超类派生出来的所有类的集合被称为继承层次 Java不支持多继承,使用接口代替。

 (2)多态

  1、对象变量时多态的,一个超类的对象变量既可引用超类对象,也可引用其任何一个子类的对象。

  2、但超类的对象变量即使指向子类对象,也无法调用子类特有的方法。

  3、不能将一个超类的对象变量赋给子类的对象变量。

  4、子类数组的引用可以转换成超类数组的引用,而不需要采用强制类型转换,但如果使用新的超类引用加入一个超类对象到子类数组中去,将会导致潜在错误。

 (3)动态绑定

 对象调用方法的过程

  1、编译器查看对象的声明类型和方法名

  2、编译器查看调用方法时提供的参数类型

  3、如果是private、static、final方法或者构造函数,则调用方式称为静态绑定。而在调用时依赖于隐式参数的实际类型,并且在运行时实现动态绑定。

  4、动态绑定时,从当前引用对象的类向超类找起,找到最合适的那个类的方法。为减小搜索开销,JVM为每一个类创建一个方法表。

(4)阻止继承:final类和方法

  1、不允许被扩展的类被称为final类。

  2、类中的方法也可以被声明为final,从而不能被子类覆盖这个方法。final类中的所有方法自动的成为final方法。

  3、类中的域(变量)也可被声明为final,从而构造了对象之后就不可以被改变其值了。final类的域并不都自动成为final域。

  (5)

原创粉丝点击