父类中声明为private的变量与方法不能被子类继承(访问)。这个变量可以和子类成员变量重名,虽然不会被子类继承,但是这个成员变量在子类创建时是存在的,子类可以用父类成员方法调用它。父类成员变量不可见,不继承不代表不存在。
下面是个小例子, 如果子类没有重写getFirstName() ,son.getFirstName()会调用父类方法访问父类private String firstName。
结果是:
儿子叫 David Smith
父亲叫 Bob Smith
第一个名字:Bob
如果子类重写了getFirstName(),son.getFirstName()访问的是子类的firstName,父类的私有成员变量就访问不到了。
结果是
儿子叫 David Smith
父亲叫 Bob Smith
第一个名字:David
public class Gooden {
public static void main(String[]args){
Son son=new Son();
System.out.println("儿子叫 "+son.firstName+" "+son.lastName);
Father father=new Father();
System.out.println("父亲叫 "+father.getFirstName()+" "+father.lastName);
System.out.println("第一个名字:"+son.getFirstName());
}
}
class Father{
private String firstName="Bob";
String lastName="Smith";//父亲类
public String getFirstName(){
return firstName;
}
}
class Son extends Father{//儿子类
String firstName="David";
public String getFirstName(){
return firstName;
}
}
|