解决方案 »
- Runtime.getRuntime().exec(command);如何使用相对exe路径
- 求助!java applet 用IE为何打不开?
- 音频格试
- 又有一个关于struts问题,就是在iterate里面怎么让radio的名字都不一样
- Struts的问题
- 关于java基础编程的一些问题~ 谢谢
- 请问:Java/Jsp中如何连接一个文件(如FoxPro的DBF、Access、Excel)并读出它的内容,能给个例子更好,谢谢!
- 如何得到Jdbtable表中某行某列的值并对其进行修改
- swing全屏后,弹出窗口显示问题
- Java程序接力,希望大家响应
- 一个超简单的问题
- 为什么我的文件名没有出来 只是路径扫描出来了 求解 谢谢
如:void studey{
system.out.println("person");
}student 也有同名的方法
void studey{
system.out.println("student");
}你再调用p.study()。得出的结果是student.
((Stu)p).study();这样就可以了
LZ要理解动态绑定的意思,就是一个父类的变量,指向一个子类的对象,运行期决定调用子类的方法,但父类本身就没有这样方法,父类变量本身是不知道子类有这样的方法的,所以编译期间就会报错了
Person p; //也就是说,p只能调换用Person的方法,不能调用Stu的方法,要调用就必须强行转换
p = new Stu();因为p指向的是Stu对象,所以当p调用Person的方法的时候,因为Stu重新覆盖了Person的方法,所以调用的就是Stu的方法,这就是所谓的动态绑定,运行期才知道p具体指向什么对象,才决定具体调用什么对象的方法
比如
人是一个类,机器人是一个子类
人 a = new 机器人();
a.说话(); 那么运行期将调用机器人的说法
但是,如果人本身不提供说话这个方法,那么a.说话();就会编译失败,因为编译器在编译期不知道a在运行期会指向机器人,只知道a是个人类,如果a没有说话方法就不能用,而如果强行转换,((机器人)a).说法,因为a被强行转换为机器人类了,编译器知道机器人有说话这个方法,所以编译能通过
好好学基础啊 我的个神那
个人技术博客 http://www.happyalaric.com
class Person {
//没有方法
}
Class Stu extends Person {
void study() {
........
}
}试试去!!!!!!!!!!!!!!!
p去调用方法,代码编译时能否通过看左边Person是否有该方法,运行时实际走哪个方法看右边,如果右边有就是右边的方法,如果没有就走父类的方法。