一、继承的关键字:extends
Java是单继承。一个只能有一个直接父类。
写法:class 类名 extends 父类名{}
二、访问修饰符:
private ,public,默认,protected( 能被同一个包及其它包中的派生类继承;)
private 的成员无法被继承
public,protected 永远被继承。
默认 只有在当前包中可以被继承。
三、继承的实例化次序:
当我们实例化一个子类的时候。先实例化父类,再实例化子类。
父类的成员定义--父类的构造函数--子类的成员定义-- 子类的构造函数
四、带有构造函数的继承
如果父类中带有无参构造函数。子类构造函数,按照正写法即可。
如果父类中没有无参构造函数,只有有参构造。在子类构造函数的第一行,必须用super()给父类构造传递参数,调用父类构造。
public class Dongwu { protected String name;
public Dongwu(String name){ //父类构造函数有参数的 this.name=name; }
public void jiao(){ System.out.println("动物的叫声"); } }
public class Niao extends Dongwu { public Niao(String name){ super(name); //子类必须用super()给父类构造传递参数,调用父类结构。写在第一行。 } public void jiao(){ System.out.println(this.name+":喳喳喳"); }
public class home { public static void main(String[] arges){ Niao a= new Niao("喜鹊"); //实参 a.jiao(); }
五、方法的重写
子类可以对父类的成员进行扩展,还可以进行重写。
子类的方法与父类的方法重名了,默认情况下子类的方法重写覆盖父类的方法。如果要显式调用父类的成员,需要使用super.XXXX()来调用父类的成员。
super 一般两种用法:
super()用来调用父类的构造。另一种super.xxx()是用来用调父类被覆盖的方法。