黑马程序员技术交流社区
标题:
关于父类和子类继承的疑问
[打印本页]
作者:
lucy198921
时间:
2013-3-24 14:32
标题:
关于父类和子类继承的疑问
本帖最后由 lucy198921 于 2013-3-24 23:18 编辑
看毕老师的一段代码:
class Employee
{
private String name;
private String id;
private double pay;
Employee(String name,String id,double pay)
{
this.name = name;
this.id = id;
this.pay = pay;
}
public void work(){};
}
class Manager extends Employee
{
private int bonus;
Manager(String name,String id,double pay,int bonus)
{
super(name,id,pay);
this.bonus = bonus;
}
public void work()
{
System.out.println("manager work");
}
}
class Pro extends Employee
{
Pro(String name,String id,double pay)
{
super(name,id,pay);
}
public void work()
{
System.out.println("pro work");
}
}
父类Employee中的私有成员name、id、poy可以给子类Manager继承吗?
之前看毕老师的视频听到父类成员private后,子类也不能引用。
作者:
谷文仁
时间:
2013-3-24 14:58
public 公共,加上这个修饰的属性和方法,可以在程序的任何其它地方访问
private 私有的,和public相反,加上这个修饰的属性和方法,只允许在自己本身这个类里访问,程序的任何其它地方都不能访问
protected 保护,位于public和private中间,加上这个修饰的属性和方法,只能在子类(extends)和同包下的程序访问,别的的地方不能访问。
还有一个默认缺省的(就是不加任何修饰的)缺省,位于public和protected中间,加上这个修饰的属性和方法,只能在同包下的程序访问,别的的地方不能访问。
作者:
邹铭钰
时间:
2013-3-24 15:03
父类Employee中的成员name、id、poy应为是被private定义的,是私有的,子类Manager不能继承,但是子类可以继承父类的构造方法。
作者:
炉海佳
时间:
2013-3-24 15:05
父类成员private后,子类也不能引用。这是对的。上面你的代码也没有直接引用。而是通过构造函数的形式访问的,子类调用的是父类的构造函数 , super(name,id,pay); 这里也就是从子类中调用父类的构造方法
作者:
胡志超
时间:
2013-3-24 15:09
子类不能继承父类的privata的修饰的成员,privata修饰的是私有成员
作者:
陆旭东
时间:
2013-3-24 15:09
编译可以通过,说明子类可以继承,我在网上查资料得知私有类型的变量可以被继承但是不能访问。
作者:
马利
时间:
2013-3-24 15:28
能不能继承和能不能访问是两个问题,父类私有的成员是可以被子类继承的,但是子类是不能直接访问父类成员的,当创建一个子类的实例后,子类实例的内存中会自动创建一个super空间,存储的即是父类的成员变量。
上面代码中存在的疑问是为什么父类是私有的变量,但是却貌似子类访问了,
其实子类没有直接访问父类成员变量,子类创建实例的时候,父类的构造函数默认是启动的,父类的构造函数当然可以直接调用自己的任何变量
作者:
马利
时间:
2013-3-24 15:28
能不能继承和能不能访问是两个问题,父类私有的成员是可以被子类继承的,但是子类是不能直接访问父类成员的,当创建一个子类的实例后,子类实例的内存中会自动创建一个super空间,存储的即是父类的成员变量。
上面代码中存在的疑问是为什么父类是私有的变量,但是却貌似子类访问了,
其实子类没有直接访问父类成员变量,子类创建实例的时候,父类的构造函数默认是启动的,父类的构造函数当然可以直接调用自己的任何变量
作者:
黑马朱超
时间:
2013-3-24 16:27
顶楼上,我个人也认为子类是可以继承父类的私有成员,但是用的话,必须要调用父类的方法。求讨论
作者:
夏凡
时间:
2013-3-24 18:09
你这个问题的核心是把“父类中的私有化成员变量会不会被子类继承” 和 “父类中私有化的成员变量能不能被子类引用” 搞混了
此处,这两个问题之间,也就是说“会不会继承”和“能不能引用”并不存在必然的联系
首先,父类中的成员变量私有化以后,其作用域被限制在了本类里面,其他任何类都不能引用,包括继承它的子类
其次,子类继承父类后,子类在完成某项功能时,其实是父类在调用此功能(也就是对应的父类的构造函数),是继承父类的功能而非继承成员变量
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2