疯狂Java讲义(九) ---- 继承(Inheritance)

Java类只能有一个直接父类,Java类可以有无限多个间接父类。如果定义一个Java类时并未显式指定这个类的值接父类,则这个类默认扩展java.lang.Object类。因此,java.lang.Object类是所有类的父类,要么是其直接父类,要么是其间接父类。

  • 重写父类方法

    方法的重写要遵循“两同两小一大”规则,“两同”即方法名相同,形参列表相同。“两小”指的是子类方法返回值类型应比父类返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;“一大”指的是子类方法的访问权限应比父类方法的访问权限更大或相等。尤其需要指出的是,覆盖方法和被覆盖方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法。

  • super关键字

    super用于限定该对象调用它从父类继承得来的Field或方法。正如this不能出现在static方法中一样,super不能出现在static修饰的方法中。static修饰的方法属于类,该方法的调用者可能是一个类,而不是对象,因此super限定也就失去了意义。

    如果在构造器中使用super,则super用于限定该构造器初始化的是该对象从父类继承得到的Field,而不是该类自己定义的Field。

    当程序创建一个子类对象时,系统不仅会为该类中定义的实例变量分配内存,也会为它从父类继承得到的所有实例变量分配内存,即使子类定义了与父类同名的实例变量。

  • 调用父类构造器

    当调用子类构造器来初始化子类对象时,父类构造器总会在子类构造器之前执行:不仅如此,执行父类构造器时,系统会再次上溯执行其父类构造器。。。依此类推,创建任何Java对象,最先执行的总是Object类的构造器。

原文地址:https://www.cnblogs.com/IvySue/p/6239131.html