继承是Java面向对象的一个重要特性,下面我们简单讲讲继承。
继承的特性
子类拥有父类非private的属性,方法。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法,即方法的重写。
Java的继承是单继承。
extends关键字
Java的继承由关键字extends来实现,格式如下:
//父类 public class SuperClass { public static void main(String []args) { …… } } //子类 public class SubClass extends SuperClass { …… }
final关键字
final关键字可以修饰类、方法、变量:
final修饰类:该类不能被继承,即最终类。
final修饰方法:该方法不能被子类重写。
final修饰变量:该变量的值不能被修改,相当于一个常量。
super关键字
我们知道在子类中可以重写父类的方法,如果父类的方法被子类重写后,又要怎么调用父类中的方法呢?super关键字就能解决这一问题,调用格式很简单,就是
super.method()
。同时,super也可以用来访问父类中的属性和变量。
构造器
在继承中,当我们创建子类的对象时,要先调用父类的构造方法并创建一个父类的对象,然后再显示的调用子类的构造方法并创建子类的对象。但是,在继承中,子类并不能继承父类的构造器(构造方法或者构造函数),那么问题来了,子类要怎么调用父类的构造>方法呢?这时候,有两种情况:
父类的构造方法带有参数。此时,必须在子类的构造器方法中显式地通过super关键字调用父类的构造器并配以适当的参数列表,格式为
super(参数1,参数2,....)
。父类的构造方法不带参数,则在子类的构造方法中用super调用父类构造方法就不是必须的,如果没有使用super关键字,系统会自动调用父类的无参构造器。
注意:如果在子类的构造方法中,有用super关键字显示调用父类的构造方法,则这一句语句必须写在子类构造方法的第一句。