代码如下:class A
{
public void fun1()
{
System.out.println("A-->public void fun1(){}");
}
public void fun2()
{
this.fun1();
}
}
class B extends A
{
public void fun1()
{
System.out.println("B-->public void fun1(){}");
}
public void fun3()
{
System.out.println("B-->public void fun2(){}");
}
}
class C extends A
{
public void fun1()
{
System.out.println("C-->public void fun1(){}");
}
public void fun4()
{
System.out.println("C-->public void fun4(){}");
}
}
public class JavaDemo44
{
public static void main(String args[])
{
print(new B());
}
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();
}
}
}其中小弟不明白的是-->main方法中的print传入参数为B类的一个实例,但是怎么就能判断a就是B类的实例呢之前也没有A a =new B()啊,难道程序运行到a.fun2()自动默认了?小弟是菜鸟,各位大侠请赐教啊!!
{
public void fun1()
{
System.out.println("A-->public void fun1(){}");
}
public void fun2()
{
this.fun1();
}
}
class B extends A
{
public void fun1()
{
System.out.println("B-->public void fun1(){}");
}
public void fun3()
{
System.out.println("B-->public void fun2(){}");
}
}
class C extends A
{
public void fun1()
{
System.out.println("C-->public void fun1(){}");
}
public void fun4()
{
System.out.println("C-->public void fun4(){}");
}
}
public class JavaDemo44
{
public static void main(String args[])
{
print(new B());
}
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();
}
}
}其中小弟不明白的是-->main方法中的print传入参数为B类的一个实例,但是怎么就能判断a就是B类的实例呢之前也没有A a =new B()啊,难道程序运行到a.fun2()自动默认了?小弟是菜鸟,各位大侠请赐教啊!!
然后用print(new B());来调用,这就是把new B()赋给方法的形参A a,方法传参就是赋值,相当于在方法的入口处执行了A a = new B();