代码如下:
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();
}
}
还请高手不吝赐教,见笑了。
解决方案 »
- tell me why?
- 怎么感觉这个写不出来了。。。
- 多个线程访问对象同一成员方法遇到的问题
- 关于jbutton的小疑惑
- IBM:谁快?Java还是 C/C++?—— 现代 JVM 中的分配比执行得最好的 malloc 实现还要快得多
- 我要去面试,不知要考些什么题呀 急呀!!!
- 请问package的功能是什么?
- 取记录集失败:用尽的Resultset!!!!这是怎么回事???
- JBuilder 如何产生Java Application .exe文件??
- 为什么我每次启动jbuilder5都要注册,我已经输入了licence和key了?
- 如何用swing修改框架背景颜色?
- 用java实现子节点到父点的遍历
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是子类 父类里边就没有子类的方法么,怎么调用