Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaのインターフェースオブジェクトから派生クラスのメンバー変数にアクセスするにはどうすればよいですか?


スーパークラスの参照変数をサブクラスオブジェクトで保持しようとすると、このオブジェクトを使用してスーパークラスのメンバーにのみアクセスできます。この参照を使用して派生クラスのメンバーにアクセスしようとすると、コンパイル時間が取得されます。エラー。

interface Sample {
   void demoMethod1();
}
public class InterfaceExample implements Sample {
   public void display() {
      System.out.println("This ia a method of the sub class");
   }
   public void demoMethod1() {
      System.out.println("This is demo method-1");
   }
   public static void main(String args[]) {
      Sample obj = new InterfaceExample();
      obj.demoMethod1();
      obj.display();
   }
}

出力

InterfaceExample.java:14: error: cannot find symbol
      obj.display();
          ^
   symbol: method display()
   location: variable obj of type Sample
1 error

スーパークラスの参照を使用して派生クラスのメンバーにアクセスする必要がある場合は、参照演算子を使用して参照をキャストする必要があります。

interface Sample {
   void demoMethod1();
}
public class InterfaceExample implements Sample{
   public void display() {
      System.out.println("This is a method of the sub class");
   }
   public void demoMethod1() {
      System.out.println("This is demo method-1");
   }
   public static void main(String args[]) {
      Sample obj = new InterfaceExample();
      obj.demoMethod1();
      ((InterfaceExample) obj).display();
   }
}

出力

This is demo method-1
This is a method of the sub class

  1. Javaで文字列をInputStreamオブジェクトに変換する方法は?

    ByteArrayInputStream InputStreamのサブクラスです クラスであり、バイトを含む内部バッファが含まれています ストリームから読み取ることができます。 文字列をInputStreamに変換できます ByteArrayInputStreamを使用したオブジェクト クラス。このクラスコンストラクタは、 getBytes()を呼び出すことで実行できる文字列バイト配列を取ります。 Stringクラスのメソッド。 例 import java.io.*; public class StringToInputStreamTest {    public s

  2. 別のパッケージからJavaパッケージにアクセスする方法

    ボスクラスが給与パッケージで定義されている例を使用して理解できます。 package payroll; public class Boss {    public void payEmployee(Employee e) {       e.mailCheck();    } } Employeeクラスが給与パッケージに含まれていない場合はどうなりますか?次に、Bossクラスは、別のパッケージのクラスを参照するために、次のいずれかの手法を使用する必要があります。 クラスの完全修飾名を使用できます。例- payroll.