2013-07-19 60 views
0

我想能夠訪問從抽象類的子類實例化的對象。這是一個例子。如何訪問從java的抽象類的子類實例化的對象?

// A.java 
public abstract class A { 
    public int getNewNo() { 
    int newNo = <Instance of B in this example here>.getNo() + 2; 
    return newNo; 
    } 
} 

// B.java 
public class B extends A { 
    public int getNo() { 
    return 2; 
    } 
} 

// C.java 
public class C { 
    public C(A a) { 
    System.out.println("The number is "+a.getNewNo()); 
    } 
} 

// example.java 
public void main(String args[]) { 
    B b = new B(); 
    C c = new C(b); 
    // should now print out "The number is 4" 
} 

這可能嗎?

謝謝。

回答

4
public abstract class A { 
    public int getNewNo() { 
     int newNo = getNo() + 2; 
     return newNo; 
    } 

    abstract int getNo(); 
} 

將做的工作。

5

嘗試:

// A.java 
public abstract class A { 
    public abstract int getNo(); 

    public int getNewNo() { 
    int newNo = getNo() + 2; 
    return newNo; 
    } 
} 
+0

你在幾秒鐘內擊敗我:) – Reddy

+0

@Reddy而你有了複選標記。多麼世界,多麼世界:) – sje397