0

Javaに問題があるため、次のようなクラスメソッドを呼び出すことができます。

interface samp{
   public void printMsg();
}
ClassA implements samp{
    public void printMsg()
    {
          S.o.p("Hi ClassA");
    }
}
ClassB implements samp{
    public void printMsg()
    {
          S.o.p("Hi ClassB");
    }
}
public MainClass{
    public static void main(String args())
    {

         samp s= new ClassA();
         s.printMsg();
         samp s= new ClassB();
         s.printMsg();
    }
}

私たちはこれを行うことができます、すべてのクラスに対して同様のメソッドではない異なるタイプのクラスメソッドを持っていますが、将来実装したいのですが、それは可能ですか?これの他のパタ​​ーンです、plsは私がこれを見つけるのを助けます。お気に入り

ClassA{
    public void fun1(){..}
    public void fun2(){..}
}
ClassB{
    public void fun3(){..}
    public void fun4(){..}
}

単一の参照を使用してこれらのメソッドを呼び出したい場合は、その参照にオブジェクトを動的に割り当てる必要がありますか?...よろしくお願いします。

4

3 に答える 3

1

共通のインターフェイスを使用してそれを行うことはできません。別のクラスに属するオブジェクトが別のメソッドを持っている場合でも、インターフェイス参照型を使用してインターフェイスで定義されているメソッドのみを呼び出すことができます。

于 2013-01-10T18:43:34.557 に答える
0

その参照はそれらの関数にのみアクセスできるため、インターフェイスで定義されているクラス関数のみを呼び出すことができます。元:

interface samp{
   public void printMsg();
}
ClassA implements samp{
    public void printMsg()
    {
          S.o.p("Hi ClassA");
    }
    public void newmthd(){
      S.o.p("you can't call me from samp reference.");
     }
}
ClassB implements samp{
    public void printMsg()
    {
          S.o.p("Hi ClassB");
    }
}
public MainClass{
    public static void main(String args())
    {

         samp s= new ClassA();
         s.printMsg();
         s.newmthd() //error... s don't have any knowledge of this function.              
         samp s= new ClassB();
         s.printMsg();

    }

}

于 2013-01-10T18:50:27.960 に答える
0

参照に含めるすべてのメソッドをスーパークラスに定義しますが、実装は空のままにします。次に、サブクラスを作成し、必要なメソッドをオーバーライドします。

例:

Class MySuperClass {
  public void fun1() {}
  public void fun2() {}
  public void fun3() {}
  public void fun4() {}
}

Class ClassA extends MySuperClass {
  public void fun1() { //implementation details }
  public void fun2() { //implementation details }
}

Class ClassB extends MySuperClass {
  public void fun3() { //implementation details }
  public void fun4() { //implementation details }
}

public Class Tester {
  public static void main(String[] args) {
    MySuperClass class1 = new ClassA();
    MySuperClass class2 = new ClassB();

  }
}
于 2013-01-10T18:55:45.463 に答える