2017-05-12 13 views
0
public class ClassOut { 

    abstract class ClassIn { 

     int x = 20; 

     public void print() { 
      System.out.println("value = " + getX()); 
     } 

     public abstract int getX(); 
    } 
} 

別のクラスのメソッドprint()の呼び出し方法?抽象は、スタンドアロンのクラス(インナーない)だった場合別のクラスからメソッドを呼び出す方法は?

答えて

1

することは、あなたは単に、あなたがそれは非常に簡単です

new MineClass().print(); 
+0

抽象クラスは内部クラスであり、他のクラスには拡張できません。 – user8000188

+0

oops - その形式が正しくありません –

0

としてそれを呼び出すことができます

public class MineClass extends Classin { 

    // implement getX 
} 

それを拡張することができます。それはすべての権利いけば

class ClassInChild extends ClassIn { 
    @override 
    public void print() { 
     System.out.println("new value = " + getX()); 
    } 

    // mandatory because it is abstract 
    @override 
    public int getX() { 
     return 5; 
    } 
} 

ClassIn classIn = new ClassInChild(); 
classIn.print(); 

を、あなたはnew value = 5などを受ける必要があります:あなたは抽象クラスを持っているとして、あなたはあなたがたとえば、あなたのサブクラスでメソッドprint()@overrideできることをやっては、それを拡張するために具体的なクラスが必要になります応答。

0

抽象クラスのインスタンス化は不可能です。静的でないフィールドやメソッドを使用するには、サブクラス化する必要があります。ここで

new ClassOut().new ClassIn(){ 
    public int getX() { 
     return 1; 
    } 
}.print(); 

私はそれのインスタンスを作成し、インスタンスメソッドを呼び出すために、内部抽象クラスの匿名の実装を行ってきました。

関連する問題