一.什么是继承?
继承就是一个类继承类,继承的类叫做子类,被继承的叫做父类。子类拥有父类的所有字段,但是子类只能调用父类属性为public和protected的字段(在同一包下子类可以调用父类的包访问权限的字段)。
二.继承的意义?
继承和组合都是快速实现了代码复用的方式,但是两者又有不同点。
三.语法
使用关键字extends,列子:
public class B extends A {//B类继承了A类 public static void main(String[] args) { } }
使用关键字 extends后B类将自动拥有A类的所有的方法和域
四.关键字super
当子类继承一个父类后,如果他想调用一个方法中的调用父类的方法,那他该怎么办呢?
public class A { public void print() { System.out.println("A类中print方法!"); } }
public class B extends A {//B类继承了A类 public void print() { print();//想调用父类的prinnt函数但是这样的操作将会倒置无限递归 } public static void main(String[] args) { B b=new B(); b.print(); } }
这时使用关键字 super,就可以调用父类的方法print,代码如下:
public void print() { super.print();//想调用父类的prinnt函数但是这样的操作将会倒置无限递归 }
五.初始化问题
1.顺序问题
按照逻辑顺序来讲,想要初始一个子类那么必定先要初始化其父类,所以在子类的构造器中首先要做的事情就是初始化父类,同样初始化父类还是使用super关键字
public B() { super(); }
2.参数问题
父类的构造器中有几个参数那么子类中的构造器也要有几个参数,并且类型相同。
public A(int intNum, String str, long longNum) { super(); this.intNum = intNum; this.str = str; this.longNum = longNum; } public B(String str, int intNum, long longNum) { super(intNum,str,longNum); }
六.子类的重写代码和添加新的字段3
在子类中你可以添加新的字段,然后再构造器中对其进行初始化。
对于重写代码就是将父类的函数在子类中进行一次新的定义,赋予其新的功能。