オブジェクトクラスの理解
すべてのクラスの最上位クラスオブジェクト
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仮想マシンに関連する方法であるため、再定義できません.
方法を使いましょう。
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.javapublic 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() + "은 동일인이 아닙니다.");
}
}
}
実行結果
Reference
この問題について(オブジェクトクラスの理解), 我々は、より多くの情報をここで見つけました https://velog.io/@clapkong/Object-클래스-알아보기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol