例子一共有兩個class. 可能出現困惑的地方我都會在后面一一解釋.A是父類,B繼續A,并且實現了protectedTest(Object obj)方法.如下面所示:
B.java的源代碼:
package cn.org.matrix.test;
import cn.org.matrix.test.A;
/**
* <p>Title: protect, private and upcasting </p>
* <p>Description: email:[email protected]</p>
* <p>Copyright: Matrix Copyright (c) 2003</p>
* <p>Company: Matrix.org.cn</p>
* @author chris
* @version 1.0,who use this example pls remain the declare
*/
public class B extends A
{
protected int protectedb = 0;
protected int protectedab = 0;
protected void protectedTest(Object obj)
{
System.out.println("in B.protectedTest(Object):" + obj);
}
}
A.java的源代碼:
package cn.org.matrix.test;
import cn.org.matrix.test.B;
/**
* <p>Title: protect, private and upcasting </p>
* <p>Description: email:[email protected]</p>
* <p>Copyright: Matrix Copyright (c) 2003</p>
* <p>Company: Matrix.org.cn</p>
* @author chris
* @version 1.0,who use this example pls remain the declare
*/
public class A
{
protected int protecteda = 0;
protected int protectedab = 0;
private void privateTest()
{
System.out.println("in A.privateTest()");
}
protected void protectedTest(Object obj)
{
System.out.println("in A.protectedTest(Object):" + obj );
}
protected void protectedTest( String str )
{
System.out.println("in A.protectedTest(String):" + str);
}
public static void main (String[] args)
{
// Test A
A a1 = new A();
a1.privateTest();
// Test B
String helloStr = "Hello";
Object helloObj = helloStr;
B b1 = new B();
A a2 = b1; // 這里發生了什么?困惑1
b1=a1; //編譯錯誤,困惑2
b1. privateTest(); //編譯錯誤,困惑3
b1.protectedTest(helloObj); //輸出結果?困惑4
b1.protectedTest(helloStr); //編譯錯誤,困惑5
a2.protectedTest(helloObj); //輸出結果? 困惑6
a2.protectedTest(helloStr); //輸出結果?困惑7 ?
}
}
新聞熱點
疑難解答