代码如下:
public class A
{
public void run()
{
System.out.println("Run");
} //给问题2用的方法
public void sleep()
{
System.out.println("Father Sleep.");
}
}public class B extends A
{
public void sleep()
{
System.out.println("Sleep");
}
}public class Test
{
public static void main(String[] args)
{
A aob = new B(); 问题1:
aob.sleep()提示没有sleep这个方法 问题2:按问题1的逻辑,输出应是Father Sleep,但是结果却是Sleep而不是Father Sleep.
aob.sleep();
}
}
还请高手不吝赐教,见笑了。
public class A
{
public void run()
{
System.out.println("Run");
} //给问题2用的方法
public void sleep()
{
System.out.println("Father Sleep.");
}
}public class B extends A
{
public void sleep()
{
System.out.println("Sleep");
}
}public class Test
{
public static void main(String[] args)
{
A aob = new B(); 问题1:
aob.sleep()提示没有sleep这个方法 问题2:按问题1的逻辑,输出应是Father Sleep,但是结果却是Sleep而不是Father Sleep.
aob.sleep();
}
}
还请高手不吝赐教,见笑了。
A aob = new A();
aob.sleep();
System.out.print(aob.getClass().toString());
A aoc = new B();
aoc.sleep();
System.out.print(aoc.getClass().toString());
}把类名打印出来,就能看到究竟哪个类被实例化了。java实际上内部做了类型转换
public void run()
{
System.out.println("Run");
} //给问题2用的方法
public void sleep()
{
System.out.println("Father Sleep.");
}
public A(){
System.out.println("I am A");
}
}public class B extends A { public void sleep()
{
System.out.println("Sleep");
}
public B(){
System.out.println("I am B");
}}
虽然aob的实际类型是B,但因为aob的声明类型是A,所以只能调用A中的方法。
A a=new B();
A是父类 B是子类 父类里边就没有子类的方法么,怎么调用