자바

Object 클래스

섹시꽃남민우 2023. 2. 20. 17:19

Object 클래스 - 모든 클래스의 최상위 클래스

Object 란 java.lang.* 패키지에 존재하면 모든 클래스의 최상의 클래스 이다.

 

toString() : Object 클래스에 있는 메소드 이며 자신에 주소 값을 String 으로 반환할 수 있고 필요하다면 자식 클래스에서 재정의 가능하다.

 

equals() : Object 클래스에 존재하는 메서드 이며 필요에 의해 자식 클래스에서 재 정의 가능하다.

package ch07;

/**
 * Object 클래스에 이해 
 * 자바는 단일 상속만을 지원한다. 
 * 하지만 모든 클래스의 최상위 클래스 Object 클래스는 예외 이다. 
 */
public class Book  {
	
	private int bookId; 
	private String title; 
	private String author;
	
	public Book(int bookId, String title, String author) {
		this.bookId = bookId; 
		this.title = title; 
		this.author = author;
	}
	
	
	// 코드힌트 살펴 보기 
	// extends Object 키워드를 작성하지 않더라도 컴파일러가 .class 생성시 
	// 자동으로 넣어 준다.
	
	// toString() <-- Object 클래스에 메서드 이다. 
	@Override
	public String toString() {
		return "[ "+this.title+" ]";
	}
	
	// equals 메서드 재정의 하기
	// 책 제목과 작가이름이 같다면 같은 책이라고 판별 해보자 
	@Override
	public boolean equals(Object obj) {
		// 만약 외주에서 주입된 값에 title 과 author 이 같다면 true를 리턴 
		// 아니라면 false 리턴하자 
		// Book 이라는 데이터 타입만 확인하자 !!! 방어적 코드 작성 
		if(obj instanceof Book) {
			Book targetBook = (Book)obj;
			if(this.title ==  targetBook.title) {
				System.out.println("같은 책 제목 입니다.");
				return true; 
			}
		}
		return false;
	}
	
}

응용하기!!

class파일

package ch07;

public class Student {

	// 학번과 이름을 정의 해주시고
	private String number;
	private String name;

	public Student(String number, String name) {
		this.number = number;
		this.name = name;
	}

	// toString --> 학번과 이름이 화면에 출력할수 있도록 설계
	@Override
	public String toString() {

		return "이름은 : " + "[" + this.name + "]" + " 학번은 : " + "[" + this.number + "]";
	}

	// equals 메서드를 제정의 해주세요
	// 이름이 같다면 동명이인 입니다
	@Override
	public boolean equals(Object obj) {

		if (obj instanceof Student) {
			Student targetStudent = (Student) obj;
			if (this.name == targetStudent.name) {
				// System.out.println("동명이인 입니다");
				return true;
			}
		}
		return false;
	}

}// end class

main 파일

package ch07;

public class MainTest3 {

	public static void main(String[] args) {
		Student student1 = new Student("21605034", "김민우");
		Student student2 = new Student("21604534", "김민우");
		Student student3 = new Student("21605054", "김미니");
		System.out.println(student1);
		System.out.println("------------------------------");

		if (student1.equals(student2)) {
			System.out.println("동명이인 입니다");
		} else {
			System.out.println("동명이인이 아닙니다");
		}

		boolean result1 = student1.equals(student3);
		boolean result2 = student1.equals(student2);
		System.out.println(result1);
		System.out.println(result2);

	}

}