黑马程序员技术交流社区
标题:
父类成员为private,子类继承到了吗?
[打印本页]
作者:
高鑫
时间:
2012-5-5 20:38
标题:
父类成员为private,子类继承到了吗?
class Fu
{
private int num = 3;
public void setNum(int num)
{
this.num = num;
}
public int getNum()
{
return this.num;
}
}
class Zi extends Fu
{
private int num = 5;
public void show()
{
int num = 6;
System.out.println("num="+this.num);
super.setNum(10);
System.out.println("num="+super.getNum());
}
}
class ExtendsDemo2
{
public static void main(String[] args)
{
Zi z = new Zi();
z.show();
}
}
复制代码
问题:父类成员为private的成员num,子类继承到了吗?我理解的是子类继承到了,但是因为私有不能直接访问,是这个意思吗?
作者:
谭景宾
时间:
2012-5-5 20:43
继承不到,private只有在当前类有效。
作者:
徐慧书
时间:
2012-5-5 20:45
既然都是private 了只有父类内部才能使用, 子类是无法调用的!
作者:
云惟桉
时间:
2012-5-5 20:49
http://blog.csdn.net/xinglongbing/article/details/2911568
楼主可以看看以上博客分析,我觉得蛮有道理的,虽然篇幅不大,但是容易理解。
我个人理解是,父类的私有成员对子类中具有不可见性,不论直接访问或是操作父类的公共成员方法访问。
可以通过get/set方法获得一个类私有成员的访问。
在C++中有友元机制friend,楼主感兴趣的话可以去了解一下。
希望能帮到你。
作者:
xiwangliujiao
时间:
2012-5-5 20:50
没有继承到,父类的私有成员只有在自己类中可以访问,对外界是不可见的,包括子类,所以没有继承到
作者:
任睦强
时间:
2012-5-5 21:11
继承不到,private只有本类能使用,如果想让子类使用,把私有属性写到父类构造方法中,子类就可以使用了。
作者:
隋营营
时间:
2012-5-5 22:26
标题:
让我的技术分突破个位数吧!
本帖最后由 隋营营 于 2012-5-6 06:15 编辑
真是英雄所见略同啊!
表达能力不行,我还是画图说明吧:
显然在
物理上(
占用内存
)
私有的类成员已经被继承了
,
只是
逻辑上
程序员不能访问!
不知理解地对与否?非常感谢提出建议。
2012-05-05_222216.png
(12.56 KB, 下载次数: 38)
下载附件
2012-5-5 22:24 上传
内存分配图解
作者:
—__
时间:
2012-5-6 03:19
英雄所见略同~我写同楼上能给我1分技术分吗{:soso_e105:}
作者:
黑马-王建雨
时间:
2012-5-6 07:43
被private修饰的成员变量只能被本类方法访问。不能被子类直接访问。
作者:
崔仁军
时间:
2012-5-6 10:35
1 首先要明白各自访问修饰符的用法
a public (公共的):被public 所修饰的属性和方法可以被所有类访问。
b protected (受保护的):被protected 所修饰的属性和方法可以在类内部、相同包以及该类的子类所访问。
c private (私有的):被private 所修饰的属性和方法只能在该类内部使用
d 默认的(不加任何访问修饰符):在类内部以及相同包下面的类所使用。
2 所以说父类private 成员是不能被继承的
作者:
钟成军
时间:
2012-5-6 11:41
通过父类中的方法可以间接的访问到私有变量。如果父类中没有这个方法,那么子类就不能访问到了。
作者:
雷云红
时间:
2012-5-6 12:35
应该继承了,但是继承也没用啊。因为PRIVATE修饰的成员智能本类内部可用,对其他类是不可见的。所以楼主就不要纠缠继承和private的。private视为保护类的封装性,而继承则打破了封装。所以两个出生就有矛盾
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2