private的继承关系问题
时间:2011-09-26
来源:互联网
1 |
class A{ public A() { System.out.println("A"); } private void AB() { System.out.println("private"); } public static void main(String args[]) { System.out.println("E"); A p=new P_211(); p.AB(); } } public class P_211 extends A{ public P_211(){ System.out.println("C"); } } |
这种情况下,可以呼叫p.AB()是因为虽然AB()函式为private,但P_211继承A所以也将prvate继承下来,只是P_211无法对prvate进行存取,因此在A类别中以子类别P_211来产生p物件时,p才能够呼叫AB()函式吗?否则,照理说AB()为private,P_211应该是看不到该方法,但p物件是以P_211来产生的却能够呼叫AB()函式就很奇怪了,所以AB()函式虽然是private但他还是可以被子类别继承,但无法被子类别所使用而已吗?
作者: fann0731 发布时间: 2011-09-26
经验+测试告诉我,private是针对呼叫的对象类别,而非物件
作者: ddtet 发布时间: 2011-09-26
我想你是误会我的意思了,这个问题其实包含了多型的概念再,
首先p是以子类别P_211产生实体,那么从多型的概念来看P_211里没有AB()这个函式,那么照理说p物件事不能去呼叫AB()这个函式的,除非P_211这个子类别有继承父类别的AB()函式(但因为是private所以子类别看不到也不能存取,但这个函式在子类别是存在的),因此以父类别A为物件型别的p物件才能够呼叫AB()函式
首先p是以子类别P_211产生实体,那么从多型的概念来看P_211里没有AB()这个函式,那么照理说p物件事不能去呼叫AB()这个函式的,除非P_211这个子类别有继承父类别的AB()函式(但因为是private所以子类别看不到也不能存取,但这个函式在子类别是存在的),因此以父类别A为物件型别的p物件才能够呼叫AB()函式
作者: fann0731 发布时间: 2011-09-26
照你的说法…下面的程式应该可以被编译,但是实际上是不行的…
希望你能看懂我要描述的东西,再不行我也没办法了…
总觉得你似乎没抓到我要说明的重点,和另一篇文章一样…
也许我文笔真的有待加强,看有没有其它人有其它说明方式,我也想看看
希望你能看懂我要描述的东西,再不行我也没办法了…
1 |
class B{ public static void main(String args[]) { A p=new P_211(); p.AB(); } } |
总觉得你似乎没抓到我要说明的重点,和另一篇文章一样…
也许我文笔真的有待加强,看有没有其它人有其它说明方式,我也想看看
作者: ddtet 发布时间: 2011-09-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28