ObjectクラスがJavaのすべてのクラスのスーパークラスであるのはなぜですか?
Java.lang.Object classは、クラス階層のルートまたはスーパークラスであり、java.langパッケージに含まれています。 。すべての定義済みクラスとユーザー定義クラスは、オブジェクトのサブクラスです。 クラス。
- すべてのオブジェクトには11の共通プロパティがあり、これらのプロパティはすべてのJava開発者が実装する必要があります。
- 開発者の負担を軽減するために、SUNは、これら11のプロパティすべてを11のメソッドで実装することにより、Objectというクラスを開発しました。
- これらすべてのメソッドには、すべてのサブクラスに共通の汎用ロジックがあります。このロジックがサブクラスの要件を満たしていない場合、サブクラスはそれをオーバーライドできます
- 実行時のポリモーフィズムを実現して、引数および戻り型として任意の型のクラスオブジェクトを送受信する単一のメソッドを記述できるようにするため。
すべてのクラスオブジェクトに共通する機能
2つのオブジェクトの比較
- public boolean equals(Object obj)
- public int hashcode()
- public final Class getClass()
- public String toString()
- 保護されたオブジェクトclone()はCloneNotSupportedExceptionをスローします
- protected void finalize()throws Throwable
- public final void wait()throws InterruptedException
- public final void wait(long timeout)throws InterruptedException
- public final void wait(long timeout、int nano)throws InterruptedException
- public final void notify()
- public final void notifyAll()
例
class Thing extends Object implements Cloneable { public String id; public Object clone() throws CloneNotSupportedException { return super.clone(); } public boolean equals(Object obj) { boolean result = false; if ((obj!=null) && obj instanceof Thing) { Thing t = (Thing) obj; if (id.equals(t.id)) result = true; } return result; } public int hashCode() { return id.hashCode(); } public String toString() { return "This is: "+id; } } public class Test { public static void main(String args[]) throws Exception { Thing t1 = new Thing(), t2; t1.id = "Raj"; t2 = t1; // t1 == t2 and t1.equals(t2) t2 = (Thing) t1.clone(); // t2!=t1 but t1.equals(t2) t2.id = "Adithya"; // t2!=t1 and !t1.equals(t2) Object obj = t2; System.out.println(obj); //Thing = Adithya } }
出力
This is: Adithya
-
Java 9での@Deprecatedアノテーションの改善点は何ですか?
@Deprecatedで注釈を付けることができる要素 この特定の要素が以下の理由で使用されなくなったことを意味します 使用するのは危険であり、エラーが発生する可能性があります。 将来のバージョンでは互換性がなくなる可能性があります。 将来のバージョンで削除される可能性があります。 より優れた、より効率的なソリューションがそれに取って代わりました。 Java 9には、次の2つの新しい要素が追加されています。以降 およびforRemoval 属性。 1)以降: この要素は、注釈付きAPI要素の非推奨バージョンを指定します。 2)forRemoval: 注釈付きのAPI要素を表す
-
Javaのスーパーキーワード
スーパー変数は直接の親クラスインスタンスを参照します。 スーパー変数は、直接の親クラスメソッドを呼び出すことができます。 super()は、直接の親クラスコンストラクターとして機能し、子クラスコンストラクターの最初の行である必要があります。 オーバーライドされたメソッドのスーパークラスバージョンを呼び出す場合、superキーワードが使用されます。 例 class Animal { public void move() { System.out.println("Animals can move");