黑马程序员技术交流社区
标题:
子类继承父类后,父类中被私有的成员变量的问题
[打印本页]
作者:
张海东
时间:
2016-12-14 22:27
标题:
子类继承父类后,父类中被私有的成员变量的问题
按目前所学知识来说,子类继承父类后,父类中被私有的成员变量,即使是子类也不能直接访问的,那么在父类中的公有的set和get方法能对外提供被私有成员变量的访问,而子类也继承了这些方法。比如父类中private name;有setName和getName方法,子类创建了对象并调用setName和getName方法完成初始化。但为什么子类中能有name这个成员变量呢?父类中的name不是被私有了吗?子类中理应没有name这个变量的,求解答
作者:
wqq1317
时间:
2016-12-14 22:38
我理解的是setName和getName方法并不是给子类使用的,而是给创建的对象用的
作者:
张海东
时间:
2016-12-15 07:43
那创建的对象也是子类对象啊
作者:
If_091021
时间:
2016-12-31 14:53
子类中继承了父类中的成员变量和方法,私有变量也被继承了。子类继承的父类的私有变量,子类不能直接访问。它有name变量,只是如果要使用有限制,需要调用父类的方法。而子类也继承了父类的方法,所以可以设置。
作者:
一片叶~
时间:
2016-12-31 16:19
class Test {
public static void main(String[] args) {
Son s =new Son();
s.setName("张三");
System.out.println(s.getName());
}
}
class Father {
private String name = "李四";
public void setName(String name) {
//this.name = name; /*子类继承了setName 和 getName 方法,但如果不给this.name = name; 语句,是不能访问父类name成员变量的,实际操作name的还是代表父类的对象this */
System.out.println("我是设置属性方法");
}
public String getName() {
return name;
}
}
class Son extends Father {
public void print() {
//System.out.println(this.name); /*报错,name has private access in Father, this 是代表Son对象, 首先在本类找name成员变量,找不到去到父类找,父类又私有了,因此报错,说明没有继承私有了的成员变量*/
}
}
作者:
2016110659
时间:
2016-12-31 18:28
name属性私有,谁说创建对象就是子类了?这有关系么?继承继承的是什么?是变量和方法,已经私有的了是不能被继承的!这里的set get方法就是外界用来给name赋值和获取的,这两个方法是public修饰的
作者:
2016110659
时间:
2016-12-31 18:30
只要子类没有name属性就会报错,因为父累的name不允许你访问
作者:
袁志娜
时间:
2017-2-4 22:25
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2