继承在面向对象开发思想中是一个很是重要的概念,它使整个程序架构具备必定的弹性,在程序中复用一些已经定义完事的类不只能够减小软件开发周期,也能够提升软件的可维护性和可扩展性。java
在java中,使用extends关键字来标识两个类的继承关系。架构
下面举个例子:ide
父类:spa
public class Test {对象
public Test(){继承
//构造方法开发
}编译器
protected void todo(){it
//成员方法编译
}
}
子类:
public class Test2 extends Test{ //继承父类
public Test2(){ //构造方法
super(); //调用父类构造方法
super.todo(); //调用父类成员方法
}
public void see(){
//新增方法
}
public void todo(){
//可重写父类方法
}
}
super():在子类中,能够直接用super关键字调用父类的构造方法和成员方法。
继承并不仅是扩展父类的功能,还能够重写父类的成员方法。
注意:当重写父类方法时,修改方法的修饰权限只能从小的范围到大的范围改变,例如上面的例子,父类中的todo()方法的修饰权限为protected,继承后子类中的方法todo()的修饰权限只能修改成public,不能修改成更小的范围private。
在实例化子类对象时,java编译器会在子类的构造方法中自动调用父类的无参构造方法。
例子:
父类:
public class Test {
public Test(){ //构造方法
System.out.println("这是父类构造方法");
}
}
子类:
public class Test2 extends Test{ //继承父类
public Test2(){ //构造方法
System.out.println("这是子类构造方法");
}
public static void main(String[] args) {
Test2 p=new Test2(); //实例化子类对象
}
}
最终获得的结果会将父类和子类的构造方法内的打印语句都实现:
这是父类构造方法
这是子类构造方法
在结果中能够看到调用构造方法的顺序,首先是顶级父类,其次才是子类,顺序从高到低。