欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

OO多态性的一个体现,OO多态性体现

来源: javaer 分享于  点击 33969 次 点评:23

OO多态性的一个体现,OO多态性体现


请看代码
class AA{
<span >	</span>String toString(){
<span >		</span>return "This is AA";
<span >	</span>}
}


class BB extends AA{
<span >	</span>String toString(){
<span >		</span>return "This is BB";
<span >	</span>}
}


class CC extends AA{
<span >	</span>String toString(){
<span >		</span>return "This is CC";
<span >	</span>}
}

public class Test{
	public static void main(String[] args){
		BB b = new BB();
		AA c = new CC();
		AA a = (BB)b;

		List<AA> as = new ArrayList<AA>();
		as.Add(a);
		as.Add(c);

		for(AA temp : as){
			System.out.println(temp.toString());
		}
	}
}

输出结果是:

This is BB
This is CC
说明了什么呢?

c对象是父类实例化子类对象所得,a是b强转过来的,其实没什么作用,正确的所用体现应该是:


class AA{
	String toString(){
		return "This is AA";
	}
}

class BB extends AA{
	String toString(){
		return "This is BB";
	}
	String SelfMethod(){
		return "I am BB";
	}
}

class CC extends AA{
	String toString(){
		return "This is CC";
	}
}

public class Test{
	public static void main(String[] args){
		AA b = new BB();
		AA c = new CC();

		List<AA> as = new ArrayList<AA>();
		as.Add(a);
		as.Add(c);

		for(AA temp : as){
			if(temp instanceof BB){
				System.out.println(temp.SelfMethod());
			}
			System.out.println(temp.toString());
		}
	}
}

<p>//没看懂?自己code一下吧。</p><p></p>


相关文章

    暂无相关文章

用户点评