Java中引用,造型等问题解析

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

作者:chris译

或许大家Java的多态问题,对上溯,下溯造型有了一定的概念,对protected和private大家想必也很清楚,但是,这几个个结合在一起,往往令人产生很多困惑,在这里,我举一个例子,大家或许会发觉这篇文章对你来说还是很有意义的:

例子一共有两个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:chris@matrix.org.cn</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:chris@matrix.org.cn</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 ?

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航