본문 바로가기
Java/기본 개념 및 클래스

[Java] 52. Object 클래스

글: Song hyun 2024. 4. 25.
728x90
반응형

[Java] 52. Object 클래스

1. Object 클래스가 뭘까?

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


 

 

1. Object 클래스가 뭘까?

(1) Object의 정의: Object 클래스는 모든 클래스의 최상위 클래스이다. 모든 클래스는 Object 클래스에서 상속받고, Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있다. Object 클래스는 단일 상속 규칙에서 유일한 예외이다.

 

(2) Object의 특징:

- Object 클래스는 java.lang 패키지 내부에 존재한다.

-import java.lang*; 프로그래밍시 import 하지 않아도 자동으로 가지고 온다.

- 많이 사용하는 기본 클래스들이 속한 패키지이며 String, Integer, System… 등이 존재한다.


 

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

*Object 클래스의 메서드 중, 일부는 재정의해서 사용할 수 있다. 재정의할 수 없는 메서드는 final로 정의된 것이다.

**클래스에 final을 붙이면 상속이 불가능해진다.

 

 

(1) toString 메서드 : 객체의 정보를 String으로 바꿔 쓸 때 사용된다.

-String/Integer 클래스는 이미 재정의 되어 있다.

 

(2) equals 메서드 : 두 인스턴스의 주소값을 비교하여, true/false를 반환한다.

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

->즉, 인스턴스가 다르더라도 논리적으로 동일한 경우, True를 반환하도록 재정의할 수 있다.

 


 

package useful;

public class EBook {
	
	private int bookTypeId;
	private String title;
	private String author;
	
	public EBook(int bookTypeId, String title, String author) {
		super();
		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) {
		if(obj instanceof EBook) {
			System.out.println("EBook이 맞음");
			return true;
		}
		else {
			return true;
		}
	}
	
	public static void main(String[] args) {
		EBook book1=new EBook(1,"홍길동전","허균");
		EBook book2=new EBook(1,"홍길동전","허균");
		
		if(book1.equals(book2)) {
			System.out.println("같은 주소를 가리킨다.");
		}
		else {
			System.out.println("아냐, 다른 주소야");
		}
		System.out.println(book1);
		System.out.println(book2);
		
		}
	
}

 

 

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);
		
		
		
	}
	
}
728x90
반응형