Java/JAVA 유용한 클래스

Object 클래스 - 1

도준영 2024. 5. 3. 17:20

학습 목표

1. Object 클래스란 뭘까?

 

2. Object 클래스의 메서드 활용

 

1. Object 클래스란 뭘까?

Object 모든 클래스의 최상위 클래스입니다. 모든 클래스는 Object에서 상속받고, Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있음. 자바에서는 단일 상속만을 지원한다고 하였는데 Object 클래스를 제외한 단 하나의 상속만 받을 수 있습니다.

  • Object 클래스는 java.lang 패키지안에 존재 합니다.
  • import java.lang.*; 프로그래밍시 import 하지 않아도 자동으로 imort 됩니다.
  • 많이 사용하는 기본 클래스들이 속한 패키지이며 String, Integer, System… 등이 존재 합니다.

 

 

 

2. Object 클래스의 메서드 활용

Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있음. 재정의 할 수 없는 메서드는 final 로 선언 되어 있습니다.

toString() 메서드

  • 객체의 정보를 String으로 바꾸어서 사용할 때 쓰임
  • String이나 Integer 클래스는 이미 재정의 되어 있음
  • toString()메서드 재정의 예

 

package useful;

import java.lang.*;

/**
 * Object 클래스는 모든 클래스의 최상위 클래스이다. import java.lang.*; 프로그래밍시 import 하지 않아도 자동으로
 * 가지고 온다. 자바는 단일 상속만 지원 합니다. 단, Object 클래스를 제외 하고!!
 */
public class Book {

	private String title;
	private String author;

	public Book(String title, String author) {
		this.title = title;
		this.author = author;
	}
	
	// Object -> toString(); 
	
	@Override
	public String toString() {
		return "[" + title + ", " + author + "]";
	}
	

	// 테스트 코드
	public static void main(String[] args) {
		Book book = new Book("데미안", "헤르만 헤세");
		System.out.println(book);
		System.out.println("--------------------");
		
		String str1 = new String("안녕");
		
	}

}

 

equals() 메서드

기본적인 동작은 두 인스턴스의 주소 값을 비교하여 true/false를 반환 합니다.

필요 하다면 재정의 하여 두 인스턴스가 논리적으로 동일함의 여부를 구현함

(사피엔스 , 사피엔스 ) 물리적으로 책은 2권이 존재하지만 논리적으로 같은 것이라고 재정의 할 수 있습니다. 즉, 인스턴스가 다르더라도 논리적으로 동일한 경우 true를 반환하도록 재정의 할 수 있습니다.

 

 

package useful;


public class EBook {
	
	private int bookTypeId;
	private String title;
	private String author;

	public EBook(int bookTypeId, String title, String author) {
		this.bookTypeId = bookTypeId;
		this.title = title;
		this.author = author;
	}
	
	// Object 클래스에 있는 메서드를 재정의
	@Override
	public String toString() {
		return bookTypeId + ", " + title + ", " + author;
	}
 
	// Object 클래스에 있는 메서드를 재정의
	@Override
	public boolean equals(Object obj) {
		// 1. EBook 클래스의 인스턴스가 맞다면 
		if(obj instanceof EBook) {
			EBook tBook = (EBook)obj;
			// 2. EBook 의 제목과 저자의 이름이 같다면 true 반환 시켜라
			if(this.title.equals(tBook.title)) {
				return true; 
			} else {
				return false; 
			}
		}
		return false;
	}
	
	
	public static void main(String[] args) {
		EBook book1 = new EBook(1, "홍길동전", "허균");
		EBook book2 = new EBook(1, "홍길동전", "허균");
		System.out.println("------------------------------------------------");
		
		boolean result1 = book1 == book2;
		System.out.println("result1 : " + result1);
		
		boolean result2 = book1.equals(book2);
		System.out.println("result2 : " + result2);	
	}
  }