继承
关键字 extends
普通类
关于继承:在定义一个类时,该类可以是一个类的子类,相当于衍生物.
-
继承同一个类的不同子类,一般都具有相同的性质,子类继承父类的方法与属性。父类中具有的方法与属性,子类可以不加修改的使用,且不要声明。
-
方法的重写,父类中的方法,子类中可以重新定义,此时发生重写,重写会覆盖父类中原先的方法。如果父类中的方法如果是 private 修饰的,子类将无法重写,如果子类中存在一个完全相同的方法,则依然不是从写,而是一个新方法。
-
super 关键字。用于访问访问父类中被覆盖的方法或变量;
-
构造器。在 new 一个一类的对象时,先调用该类(就是子类)的构造器,子类构造器的第一句,永远是先调用父类的构造器,其父构造器的调用方法,super(参数表), super 传递的参数,必须是子类构造器中具有的参数。可以不写,默认实现。
-
子类中有和父类同名的变量或发生重写是,不会覆盖其空间。
-
类是单继承,接口可以多继承。
-
被final 修饰的类,是不能被继承的,成为最终类。
-
所有的类都有一个共同的父类 object 类,其中有很多重要的方法,而不同的类一般都会去重写自己要用的方法。
class Father//父类 { Father(int cc,int kk)//构造器 { this.cc=cc; this.kk=kk; } Father() {} private int a; //不能被子类继承 int cc; int kk; private void pr() { System.out.println("private void pr()");//输出"private void pr()" } } class Child extends Father{ //继承父类 Child(int cc,int age,int kk)//子类构造器 { super(cc,kk);//调用父类构造器,可以默认调用 } int age; int cc=5; void pr() { System.out.println(super.cc);//使用super 可以访问到被子类覆盖的父类方法或属性 } }
`
继承,相当于分类,所有继承一个父类的,可以属于一种类,并且,每一个只能有一个父类。相当于一个动物,属于犬科就不能属于猫科。而猫科这个类和犬科这个类,同时继承动物这个类。
抽象类的继承
- 抽象类的子类必须是抽象类或者子类实现类抽象方法。
接口的继承
接口相当于规则,所以,一个类可以同时遵守多个规则,所以接口可以多继承。
- 和抽象类类似,接口可以被普通类实现或抽象类,或被接口继承。
总结
- 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。继承为多态提供了可能,
- 提高了代码的复用性
提高了代码的维护性
建立了类与类之间的关系,继承是多态的前提。
在一定程度上,造成类与类之间的强关联,即所谓的高耦合。
父类功能的改变对子类也会造成影响。
父类有的,子类可以继承。
父类有的,子类可以去改变。
父类没有的,子类可以添加。
这是学习笔记,有问题的地方希望留言指正。