2013-07-19 112 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