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

Javaプログラムでのsuper()とthis()の違い


Javaは、他のさまざまなキーワードとともに、これとsuperを特別なキーワードとして提供します。これらのキーワードは、主にクラスの現在のインスタンスとそのスーパークラスをそれぞれ表すために使用されます。この類似性により、これらのキーワードは両方とも、以下のようにリストされているそれらの間に大きな違いがあります-

これ スーパー
Sr。いいえ。 キー
1 表現と参照 このキーワードは、主にクラスの現在のインスタンスを表します。 一方、superキーワードは、親クラスの現在のインスタンスを表します。
2 クラスコンストラクターとの相互作用 このキーワードは、同じクラスのデフォルトコンストラクターを呼び出すために使用されます。 親クラスのデフォルトコンストラクターを呼び出すために使用されるsuperキーワード。
3 メソッドのアクセシビリティ このキーワードは、現在のクラスの参照があるため、現在のクラスのメソッドにアクセスするために使用されます。 スーパーキーワードを使用して、親クラスのメソッドにアクセスできます。
4 静的コンテキスト このキーワードは静的コンテキストから参照できます。つまり、静的インスタンスから呼び出すことができます。たとえば、コンパイルや実行時エラーなしでxの値を出力するSystem.out.println(this.x)を記述できます。 一方、スーパーキーワードは静的コンテキストから参照できません。つまり、静的インスタンスから呼び出すことはできません。たとえば、System.out.println(super.x)と書くことはできません。これにより、コンパイル時エラーが発生します。

この例とスーパー

Equals.jsp

class A {
   public int x, y;
   public A(int x, int y) {
      this.x = x;
      this.y = y;
   }
}
class B extends A {
   public int x, y;
   public B() {
      this(0, 0);
   }
   public B(int x, int y) {
      super(x + 1, y + 1);// calls parent class constructor
      this.x = x;
      this.y = y;
   }
   public void print() {
      System.out.println("Base class : {" + x + ", " + y + "}");
      System.out.println("Super class : {" + super.x + ", " + super.y + "}");
   }
}
class Point {
   public static void main(String[] args) {
      B obj = new B();
      obj.print();
      obj = new B(1, 2);
      obj.print();
   }
}

出力

Base class : {0, 0}
Super class : {1, 1}

Base class : {1, 2}
Super class : {2, 3}

  1. Javaでの例外とエラーの違い

    例外とエラーはどちらもThrowableクラスのサブクラスです。このエラーは、主にシステムリソースの不足が原因で発生する問題を示しており、アプリケーションはこれらのタイプの問題をキャッチするべきではありません。エラーの例としては、システムクラッシュエラーやメモリ不足エラーなどがあります。エラーは主に実行時に発生し、チェックされていないタイプに属します。 例外は、実行時およびコンパイル時に発生する可能性のある問題です。これは主に、開発者によって作成されたコードで発生します。例外は、チェックされた例外とチェックされていない例外などの2つのカテゴリに分類されます。 Sr。いいえ。 キー

  2. Javaでのシリアル化と外部化の違い

    シリアル化と外部化はどちらも、オブジェクトをストリームバイトに変換し、バイトストリームをデータベースまたはメモリに格納するプロセスです。 java.io.Serializableインターフェイスを実装するクラスはシリアル化できます。一方、アプリケーションの要件に基づいてカスタムシリアル化に使用される外部化。外部化はjava.io.Serializableを拡張します。 Sr。いいえ。 キー シリアル化 外部化 1 インターフェース シリアル化はマーカーインターフェイスです 外部化には、readExternalメソッドとwriteExternalメソッドの2つのメソ