オブジェクトクラスの理解


すべてのクラスの最上位クラスオブジェクト


ObjectクラスはすべてのJavaクラスの最上位レベルです.したがって、すべてのクラスはObjectクラスから継承されます.
でもクラスを作るときはextends Objectって書いてなかったよね?!?!→コンパイラ自動変換.
JavaDocにObjectのメソッドが表示されます.
文字列表示のタイプメソッドDescription StringtoString()オブジェクトを返します.オブジェクトの説明または特定のメンバー変数の値を返すために再定義します.2つのインスタンスが同じかどうかを返します.論理的に同じインスタンスを再定義できます.inthashCode()オブジェクトのハッシュコード値を返します.Objectclone()オブジェクトをコピーして、同じメンバー変数値を持つ新しいインスタンスを作成します.ClassgetClass()オブジェクトのClassクラスを返します.voidfinalize()インスタンスがhipメモリから削除されたときにゴミ収集器(GC)によって呼び出されるメソッド.ネットワーク接続の切断、ファイルストリームの切断などを実施します.voidwait()マルチスレッドプログラムで使用する方法.スレッドを「待機状態」(nonRunnable)にします.voidnotify()wait()メソッドが待機しているスレッド(非runnable状態)を実行可能状態(runnable)にインポートします.
オブジェクトメソッドには再定義可能なメソッドもあれば、再定義できないメソッドもあります.finalリザーブ宣言の方法は、Javaスレッドでクラスを使用またはロードするなど、Java仮想マシンに関連する方法であるため、再定義できません.

方法を使いましょう。

  • からString():
  • を再定義して学号と名前を出力します.
  • equals():学号と同じ名前の場合、
  • として再定義してtrueを返します.
  • HashCode():出力学号
  • として再定義
  • クローン():クローン成功.出力の再定義
  • Cloneable,
  • を実現
  • throws CloneNotSupportedException
  • Student.java
    public class Student implements Cloneable {
    
        int studentId;
        String studentName;
    
        public Student(int id, String name) {
            this.studentId = id;
            this.studentName = name;
        }
    
        @Override
        public String toString() {
            return "[학번: " + studentId + ", 이름: " + studentName + "]";
        }
    
        @Override
        public boolean equals(Object obj) {
            if(obj instanceof Student) {
                Student std = (Student)obj;
                if(this.studentId == std.studentId && this.studentName == std.studentName) return true;
                return false;
            }
            return false;
        }
    
        @Override
        public int hashCode() {
            return studentId;
        }
    
        @Override
        public Object clone() throws CloneNotSupportedException {
            System.out.println("클론되었습니다.");
            return super.clone();
        }
    }
    Main.java
    public class Main {
        public static void main(String[] args) throws CloneNotSupportedException {
            Student s1 = new Student(1001, "박수빈");
            Student s2 = new Student(1002, "스펜서");
            Student s3 = new Student(1003, "아만드");
    
            System.out.println(s1.toString());
            System.out.println(s2.studentName + "의 학번은 " + s2.hashCode() + "입니다.");
    
            if(s1.equals(s3)) {
                System.out.println(s1.toString() + "과" + s3.toString() + "은 동일인입니다.");
            } else {
                System.out.println(s1.toString() + "과" + s3.toString() + "은 동일인이 아닙니다.");
            }
    
            Student s4 = (Student)s1.clone();
    
            if(s1.equals(s4)) {
                System.out.println(s1.toString() + "과" + s4.toString() + "은 동일인입니다.");
            } else {
                System.out.println(s1.toString() + "과" + s4.toString() + "은 동일인이 아닙니다.");
            }
        }
    }
    

    実行結果