一个类只能有一个父类,但可以被多个子类同时继承。那么java中到底能从父类中继承哪些成员呢?
假设存在类Parent,有一个私有成员变量a,并且针对该私有成员变量有个public的取得器。如下:
public class Parent {
private int a;
public Parent(int i){
a = i;
}
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
}
其子类如下:
public class Child extends Parent{
public Child(int m) {
super(m);
}
public static void main(String args[]){
Child child = new Child(4);
System.out.println(child.getA()+" and "+child.b+" and "+child.c);
}
}
输出结果为: 4 and 5 and 6
从实例得出,子类可以继承父类中的public、protected域,不能继承父类中的private域,但可以通过父类的public访问器访问其私有域。如果父类没有提供public的访问器,子类就不能访问父类的私有域。
就好比,父类造了一个房子,房子里有一些房间,有些房间是有锁的---private,有些房间是无锁的---public。而子类得到房子后,虽然子类得到这个房子,但这个房子始终会打上【不劳而获从父类继承来的】的标签。所以子类可以努力改造这个房子。
改造方法:
- 可以选择将房子里面的某个房间上锁
- 可以重新改造某个房间-------对从父类继承过来的方法进行重写