Re: [问题] 在子类别new建构子为protected的父类别

楼主: sbrhsieh (十年一梦)   2014-05-11 02:37:54
※ 引述《pzyc79 (I'm bored)》之铭言:
: 标题: [问题] 在子类别new建构子为protected的父类别
: 时间: Sun May 11 00:53:48 2014
:
: ===============Class Test:===============
: package a;
:
: public class Test {
: protected Test(){
: }
: }
:
: ===============Class Test2:==============
: package b;
:
: import a.Test;
:
: public class Test2 extends Test{
: void fun(){
: Test t = new Test(); //Test() is not visible
: }
: }
:
: WHY? 宣告protected不是可以在子类别中看见吗?
我觉得这一篇的问题同 #1J5-rnUZ [问题] Object的clone()问题。
就是误解了 protected member 可被不同 package 的 subtype 存取的意义。
先把你的 sample code 稍微改成这样:
// a/Test.java
package a;
public class Test {
protected Test() {
System.out.println("Test::Test()");
}
}
// b/Test2.java
package b;
import a.Test;
public class Test2 extends Test {
public static void main(String[] args) {
new Test2();
}
}
编译没问题啊,那么 Test2 的确可以"看的见" Test 的 protected constructor 呀,
不然编译器帮你添加的 public Test2::Test2() constructor 怎么可以 invoke
Test::Test() constructor?(跑跑看 b.Test2 验证一下)
:
:
作者: gmoz ( This can't do that. )   2014-05-11 09:29:00
作者: pc2990 (Ryu)   2014-05-15 21:20:00
太强了 这篇是正解..

Links booklink

Contact Us: admin [ a t ] ucptt.com