作者dream1124 (全新开始)
看板java
标题Re: [问题] 继承不同package类别 的 方法可见度?
时间Sun Mar 16 20:38:42 2014
※ 引述《skipeco (skipeco)》之铭言:
这是个好问题,如果只从常见教学文件中的 protected 修饰词字面意思角度解释,
看到也会直觉认为有点奇怪
不过我想这可能是有些教学文件都说得不够仔细的缘故,只讲了一个大概原则
没有特别说明是怎麽样的存取,也没有说明是来自静态成员还是特定类别的实例。
当他们说 protected 修饰後的类别成员,只要其他套件的类别继承就可以存取的时候,
在非静态的一般成员,也就是类别实例建构出来的成员部分,
意思是指其他套件继承後的"实例"可以存取父类别"实例"的方法,
而且这个父类别的实例必须是继承者实例的父亲,
也就是在 new XClass()的时候,那个会比 XClass 的实例还要先去建构的父类别实例。
以这个例子来说,main 里面写的 Message msg = new XMLMessage()
相当於在 XMLMessage 静态成员里面建构一个 XMLMessage 的实例,
msg 和 main 两者并没有亲子关系,不符 protected 的存取条件
要在 main 里面存取 XMLMessage 的 getText(), 就要让两个类别的 getText()
都加上 static 修饰词,成为父子关系,
或着从 XMLMessage 的一般方法里面, 呼叫 super.getText()
存取父类别实例的 getText()。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.162.121.191
1F:推 skipeco:想了一天了解了,3Q! 03/17 16:09
※ 编辑: dream1124 (118.167.104.73), 04/02/2014 19:31:04