继承
继承:基于某个父类的扩展,制定出一个新的子类,子类可以继承父类原有的属性和方法,也可以增加父类所不具备的属性和方法,还可以重写父类的成员方法。(比较简单的理解方式就是遗传,基于你的父亲,可以有无限个儿子,儿子会遗传父亲的一些特性,也可以学会一些你父亲所不会的东西,甚至在某些程度上,你的出现还会改变你的父亲的一些特性。)
(那么你对你父亲一些特性的改变的这一过程就叫做)重写:子类中将父类的成员方法的名称保留(你是如何也改变不了你的姓氏的),重写成员方法的实现内容,再改变成员方法的存储权限,或是改变成员方法的返回值类型。
当重写父类方法时,修改方法的修饰权限只能从小范围到大范围改变。(你爸爸的脾气只会越来越好,越来越能容忍,还不是因为你太烦了)private->protected->public
在实例化子类对象时,父类无参构造方法将被自动调用(你爹不在乎的你都随便),担有参构造方法并不能被自动调用(你父亲在乎的就不是你想用就能用的了),只能依赖于super(你母亲)关键字显式的调用父类的构造方法。
注:如果用finalize()方法对对象进行处理。需要确保子类的finalize()方法的最后一个动作是调用父类的finalize()方法,以保证当垃圾回收对象占用内存时,对象的所有部分都能正常终止。(你如果想扔一些你觉得没用时,一定要保证最后你父亲也同意了,万一你没经过同意,你父亲什么时候想用了,你就凉了)。
class Parent{//父类
Parent(){
System.out.println("调用父类的Parent()构造方法");
}
}
class SubParent extends Parent{
SubParent(){
System.out.println("调用子类的SubParent()构造方法");
}
}
public class Subroutine extends SubParent{
Subroutine(){
System.out.println("调用子类的Subroutine()构造方法");
}
public static void main(String[] args)
{
Subroutine s=new Subroutine();
}
}