继承的类型
类与类间的继承:
public class 子类 extends 父类{...}
接口与接口间的继承:例如,接口C继承接口A和B
interface C extends interface A,B{...}
注意:类只能实现接口而不能继承,例如类C实现接口A、B
public class C implements A,B{...}
继承的范围
访问修饰符的作用范围
修饰符 | 同一个类中 | 同一个包中子类,其他类 | 不同包中子类 | 不同包中其他类 |
private | √ | × | × | × |
默认 | √ | √ | × | × |
protected | √ | √ | √ | × |
public | √ | √ | √ | √ |
子类可以继承的:
public和protected修饰的属性和方法。
默认修饰符修饰的属性和方法(同包)。
子类不能继承的:
private成员
子类与父类不同包,使用默认访问权限的成员
构造方法
关于构造方法的继承
子类是不继承父类的构造方法的,它只是调用(隐式或显式)。如果父类的构造方法带有参数,则必须在子类的构造方法中显式地通过 super 关键字调用父类的构造方法并配以适当的参数列表。如果父类构造方法没有参数,则在子类的构造方法中不需要使用 super 关键字调用父类构造方法,系统会自动调用父类的无参构造方法。
调用有参数的父类构造方法:
class TestUser extends User{
public TestUser(String name,int id){
super(name,id);
System.out.println("子类构造方法");
}
}
调用无参数的父类构造方法:
class TestUser extends User{
public TestUser(){
System.out.println("子类构造方法");
}
}