谢谢各位,先 中午回来试了一下,用强制转换是可以的上面有人,用super关键字,我开始也是打算这样的, 可是,class c 并没有继承自任何其他的类 所以super就不能指向 class b 而是指向 object 所以不能用super关键字,我说得对吗?---------------------- //我是菜鸟,请多关照!!
强制转换是不行的。java的运行机制是RTTI的。有程序为证! class A{ void baseMethod(){ System.out.println("A:baseMethod is called"); }}class B extends A{ void baseMethod(){ System.out.println("B:baseMethod is called"); } }public class C{ public void test(){ B b = new B(); b.baseMethod(); ((A)b).baseMethod();//强制转化 } public static void main(String[] args){ C c = new C(); c.test(); } }//---------console output--------------------B:baseMethod is called B:baseMethod is called至于如何调用父类的方法,我也不知道。
super.haha.m_l()
haha仍然是B,所以是不行的
中午回来试了一下,用强制转换是可以的上面有人,用super关键字,我开始也是打算这样的,
可是,class c 并没有继承自任何其他的类
所以super就不能指向 class b 而是指向 object
所以不能用super关键字,我说得对吗?----------------------
//我是菜鸟,请多关照!!
((a) haha).m_1();其实和haha.m_1()执行的效果是一样的,都是调用类b的方法m_1
并没有随着你的强制类型转换而改变这种是java的处理机制,如果不是这样的话就出现很多混乱的情况了
((a) haha).m_1();其实和haha.m_1()执行的效果是一样的,都是调用类b的方法m_1
并没有随着你的强制类型转换而改变这种是java的处理机制,如果不是这样的话就出现很多混乱的情况了
class A{
void baseMethod(){
System.out.println("A:baseMethod is called");
}}class B extends A{
void baseMethod(){
System.out.println("B:baseMethod is called");
}
}public class C{
public void test(){
B b = new B();
b.baseMethod();
((A)b).baseMethod();//强制转化
}
public static void main(String[] args){
C c = new C();
c.test();
}
}//---------console output--------------------B:baseMethod is called
B:baseMethod is called至于如何调用父类的方法,我也不知道。
自己又懒得去试!
就可以调用了。
使用的是java中的隐藏。