以下是我正在尝试处理但无法解决问题的代码:“我能否真正在Java中执行以下操作..如果是,请帮助了解我”如何“,如果没有”为什么? “”......看看下面的代码......
class Base{
public void func(){
System.out.println("In Base Class func method !!");
};
}
class Derived extends Base{
public void func(){ // Method Overriding
System.out.println("In Derived Class func method");
}
public void func2(){ // How to access this by Base class reference
System.out.println("In Derived Class func2 method");
}
}
class InheritDemo{
public static void main(String [] args){
Base B= new Derived();
B.func2(); // <--- Can I access this ??? This is the issue...
}
}
提前致谢!!!!等待一些有用的答案:) ...
答案 0 :(得分:4)
Base
如何知道扩展类中存在哪些函数/方法?
编辑:
通过explict / type cast,这可以实现,因为编译器在将对象Base
转换为Derived
时会知道你在做什么:
if (B instanceof Derived) {//make sure it is an instance of the child class before casting
((Derived) B).func2();
}
答案 1 :(得分:2)
这甚至不会编译,因为B不知道func2
答案 2 :(得分:2)
由于对象B的类型是Base,而Base类型的公共接口中没有func2(),因此您的代码不会编译。
您可以将B定义为Derived或将B对象强制转换为Derived:
Derived B = new Derived(); B.func2();
//or
Base B = new Derived(); ((Derived)B).func2();
答案 3 :(得分:1)
你可以做到
((Derived) B).func2();
你做不到
B.func2();
因为func2不是Base类的方法。
答案 4 :(得分:0)
像这样:
((Derived) B).func2();