如图,这可以说明Java中子类可以继承父类的私有字段么?

如图

应该可以说明,不过看起来不够清晰~也有些困扰~


一眼看上去只能说明继承了父类的get set方法~
因为创建的Manager对象代码中很直观地调用了父类的 get set方法


相关知识:“this关键字总是指向调用该方法的对象”
return this.name; 往子类看,是在say()方法中被调用了~ 否则根本出不了名字
所以这里的this 是Manager对象,而不是父类Employee

既然能调用 this.name,子类自己却没有声明name属性,那么就说明继承了父类的name属性~



总结:父类的私有属性,子类可以继承,但是却无法在除父类自己代码范围之外被调用

另外,这段代码有些马虎,按照OOP思想,父类Employee自己就应该有个say() 方法,子类继承是重写say() 方法……

我说的不正确的话,麻烦Java的老油条指正!
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-25
子类继承父类的所有(包括私有属性),但是却不能调用父类的私有属性,父类私有的属性方法等子类都不能调用,所以子类里用的getName()在父类里是public的。这是java的一个特性,叫封装本回答被提问者采纳
第2个回答  2013-10-25
有继承,但,没法直接访问的。

class Parents{
private String name;
public void setName(String name){
this.name=name;
}
public String getName(){return this.name;}
}
class ParentsSon extends Parents{
//如果覆盖setName或getName,则不能访问到父类的name变量
}

public class Parent{
public void test(){
ParentsSon son = new ParentsSon();
son.setName("Simon");
System.out.println(son.getName());
}

public static void main(String args[]){
new Parent().test();
}
}
第3个回答  2013-10-25
private 是私有的,父类也应该算私有。当爹的也得有点隐私啊.. 你调用的只是它的getsetter方法
相似回答