OO多态性的一个体现,OO多态性体现
分享于 点击 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>
相关文章
- 暂无相关文章
用户点评