继承:
继承就是保持已有类的特性而构造新类的过程。继承后,子类能够利用父类中定义的变量和方法,就像它们属于子类本身一样。
单继承:在类层次中,子类只继承一个父类的数据结构和方法,一个类只有一个父类
多继承:在类层次中,子类继承了多个父类的数据结构和方法,一个类允许有多个继承
子类重写父类的方法:
1、父类中私有方法不能被重写。因为父类私有方法子类根本无法继承。
2、父类中方法有final修饰的不能被重写
3、子类所重写的方法的访问修饰符必须高于或者等于父类的访问修饰符。
4、如果父类的方法有返回值类型,则子类对应的方法的返回值须于父类相同或者是父类返回值的派生类
继承下构造方法的执行过程
1、子类的构造过程中,必须调用其父类的构造方法。一个类,如果我们不写构造方法,那么编译器会帮我们加上一个默认的构造方法,所谓默认的构造方法,就是没有参数的构造方法,但是如果你自己写了构造方法,那么编译器就不会给你添加了,所以有时候当你new一个子类对象的时候,肯定调用了子类的构造方法,但是在子类构造方法中我们并没有显示的调用基类的构造方法,就是没写,如:super(); 并没有这样写,但是这样就会调用父类没有参数的构造方法,如果父类中没有没有参数的构造方法就会出错。
2、如果子类的构造方法中没有显示的调用基类构造方法,则系统默认调用基类无参数的构造方法注意:如果子类的构造方法中既没有显示的调用基类构造方法,而基类中又没有默认无参的构造方法,则编译出错,所以,通常我们需要显示的:super(参数列表),来调用父类有参数的构造函数
使用抽象类和抽象方法时,需要遵循以下原则
1、 在抽象类中,可以包含抽象方法,也可以不包含抽象方法,但是包含了抽象方法的类必须定义为抽象类。
2、 抽象类不能直接实例化,即使抽象类中没有声明抽象方法,也不能直接实例化。
3、 抽象类被继承后,子类需要实现其中所有的抽象方法。
4、 如果继承抽象类的子类也被声明为抽象类,则可以不用实现父类中的所有抽象方法。