目录
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的属性。
从已有的类派生出新的类,称为继承。
class 父类 {
}
class 子类 extends 父类 {
}
在不同类中会有共同的属性或者方法,我们可以将这些共同的属性和方法放在同一个父类,然后再派生出其他子类来共享。
继承实现软件重用的重要手段,避免重复,易于维护,易于理解。
java不支持一继承多,但支持多重继承。
即一个子类不能同时继承多个父类,但是可以一层一层继承。
(C++支持多重继承)
使用extends关键字可以让一个子类继承一个父类。格式为
class 父类 {
}
class 子类 extends 父类 {
}
?使用 implements 关键字可以变相地让一个类多继承,但使用情况是类继承接口,格式为
public interface A {
}
public interface B {
}
public class C implements A,B {
}
注:接口的声明用interface 。
子类拥有父类非 private 的属性、方法。? ? ? ? ? ? ? ? ? ? ??
即子类不能直接继承父类中的 private 属性和方法,需要通过有参构造函数进行继承。
子类可以书写自己的属性和方法,即子类可以对父类进行扩展。
这两点可以概括为子类从它的父类中继承可访问的数据域和方法,也可以添加新的数据域和新的方法。子类可以对父类的方法进行重写,但重写的父类方法要求不能被final修饰。
父类必须要声明一个默认的构造函数。如
public 父类名(){}
作用:变量里面存放的"值"不能变。
final修饰类中的方法
作用:可以被继承,但继承后不能被重写。
final修饰类
作用:类不可以被继承。
//构造方法
super();
//或
super(参数列表);
//-----
//调用父类的方法语法
super.方法名(参数列表)
子类是不继承父类的构造器的,它只是调用(隐式或显式)。
如果父类的构造器带有参数,则必须在子类的构造器中显式地通过?super?关键字调用父类的构造器并配以适当的参数列表。如
子类名() {
super(参数列表);
}
如果父类构造器没有参数,则在子类的构造器中不需要使用?super?关键字调用父类构造器,系统会自动调用父类的无参构造器。如
子类名() {}
在编写代码要注意:
?本文大部分知识点都来自菜鸟教程https://www.runoob.com/java/java-inheritance.html