是啥意思java

来源:百度知道 编辑:UC知道 时间:2024/06/18 22:30:52
public class OODemo03
{
public static void main(String args[])
{
print(new C()) ;
}
public static void print(A a)
{
a.fun2() ;
// 缺少一个对象是否是某一个类的实例的判断
if(a instanceof B)
{
B b = (B)a ;
b.fun3() ;
}
if(a instanceof C)
{
C c = (C)a ;
c.fun4() ;
}
}
非常谢谢
不好意思我问的是
print(new C()) ;
我把参数和对象搞晕了

你是想问这段java代码是什么意思?

先说public static void print(A a)吧。
就是一个参数是A类型的函数,显然A是B,和C的基类。
a.fun2() ;先用基类调用fun2()。如果被子类重载了的话,对象会调用运行时类的方法fun2()。就像题目中的那样,如果C类重载了fun2(),那么会调用C的fun2();

if(a instanceof B)
{
B b = (B)a ;
b.fun3() ;
}
如果对象是B类型的,也就是说,a的真实类型是B类型。因为a是以A类型传入的。所以可能是B类型的。
如果是就调用B类型的 fun3();

同样下面判断是否是C类型的
if(a instanceof C)
{
C c = (C)a ;
c.fun4() ;
}
如果是就调用C类的fun4() ;

main函数很简单,就是调用print(A a)方法。
并且传入一个C 对象,因为C是A的子类,所以向上转型时安全的。

什么意思?多态么?