![](/img/trans.png)
[英]JSON serialize only base class fields when a base class-typed reference is passed
[英]Can I access a subclass method through a base class-typed reference?
下面是我正在嘗試處理的代碼,但無法解決問題:“我真的可以用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...
}
}
提前致謝!!!! 等待一些有用的答案:) ...
簡短而甜美? 不,你不能。如何必須Base
了解函數/方法存在於擴展的類?
編輯:
通過顯式/類型轉換,可以實現此目的,因為編譯器認為您知道將對象Base
為Derived
時正在做什么:
if (B instanceof Derived) {//make sure it is an instance of the child class before casting
((Derived) B).func2();
}
因為B不知道func2,所以它甚至不會編譯
由於對象B的類型為Base,並且Base類型的公共接口中沒有func2(),因此您的代碼將無法編譯。
您可以將B定義為Derived或將B對象轉換為Derived:
Derived B = new Derived(); B.func2();
//or
Base B = new Derived(); ((Derived)B).func2();
你可以做
((Derived) B).func2();
你做不到
B.func2();
因為func2不是基類的方法。
像這樣:
((Derived) B).func2();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.