继承的优点:1.提高了代码的复用性。
2.让类与类之间产生了关系,有了这个关系,才有了多态的特性。
JAVA只支持单继承,不过它支持多重继承。(多继承:造成了安全隐患:多个父类中定义了方法名相同的方法,内容却不同,子类不知道运行哪一个方法)
继承子父类的一些关系:
1.变量:如果子类中拥有非私有的同名成员变量时,子类要访问本类中的变量时用this.;子类要访问父类中的变量时用supe.。
2.子父类中函数:函数的覆盖(重写,保留父类功能原有的定义,并重写了定义中的内容)
注意事项:1.子类覆盖父类必须保证子类方法的权限大于父类方法的权限(public>默认>private)
2.静态方法只能访问静态方法
重载和重写的区别:重载只看同名函数的参数列表不同;子父类的重写方法要一模一样。
3.构造函数:子类的构造函数第一行隐藏了super();
子类是不能继承父类的构造函数:原因是,构造函数名必须和类名一致,所以为了保持方法“一模一样”, 则不可能成为构造函数,所以不可能。
为什么子类一定访问父类中的构造函数?
根本原因:子类中的所有构造函数中的第一行,其实都有一条影身的语句super();
解释原因:super()表示父类的构造函数并会调用于参数相对应的父类中的构造函数。子类中,它在调用父类中空参数的构造函数。因为子类继承父类,会继承父类中数据,所以必须要看父类是如何对自己的数据进行初始化的。所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例过程化。
this.()和super.()都必须在子类构造函数的第一行。