站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题对Java多态性综合运用的探讨

对Java多态性综合运用的探讨

摘要: 或许大家java的多态问题,对上溯,下溯造型有了一定的概念......
<iframe src="http://training.yesky.com/ad/iframe/develop_java.htm" frameBorder=0 width=578 scrolling=no height=62></iframe>

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

  例子一共有两个class. 可能出现困惑的地方我都会在后面一一解释。

  A是一个父类,B继承A,并且实现了protectedTest(Object obj)方法.如下面所示:

  B.java的源代码:

<table width="100%" bgColor=#ffffff> <tr> <td>
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);
}
}
</td></tr></table>
  A.java的源代码:

<table width="100%" bgColor=#ffffff> <tr> <td>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 ?
}
}</td></tr></table>




↑返回目录
前一篇: Java网络编程之URI、URL研究(下)
后一篇: Java模式设计之单例模式(四)