학습 목표
1. Object 클래스란 뭘까?
2. Object 클래스의 메서드 활용
Object 클래스란 뭘까?
Object 모든 클래스의 최상위 클래스입니다.
모든 클래스는 Object에서 상속받고, Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있음.
자바에서는 단일 상속만을 지원한다고 하였는데 Object 클래스를 제외한 단 하나의 상속만 받을 수 있습니다.
- Object 클래스는 java.lang 패키지안에 존재 합니다.
- import.java.lang.*; 프로그래밍시 import 하지 않아도 자동으로 imort 됩니다.
- 많이 사용하는 기본 클래스들이 속한 패키지이며 String, Integer, System… 등이 존재 합니다.
Object 클래스의 메서드 활용
Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있음. 재정의 할 수 없는 메서드는 final 로 선언 되어 있습니다.
toString() 메서드
- 객체의 정보를 String으로 바꾸어서 사용할 때 쓰임
- String이나 Integer 클래스는 이미 재정의 되어 있음
- toString()메서드 재정의 예
package useful;
import java.lang.*;
// lang 모든 녀석들을 가지고 온다.
/*
* Object 클래스는 모든 클래스의 최상위 클래스이다.
* import jvav.lang.*; 프로그래밍시 import 하지 않아도 자동으로 가지고 온다.
* 자바는 단일 상속만 지원 합니다. 단, Object 클래스를 제외 하고!!
*/
public class Book extends Object {
// Obejct 파일을 직접 만든것이 아니라 Java에서 만들어 준것
private String title;
private String author;
public Book(String title, String author) {
this.title = title;
this.author = author;
}
// Object -> toString();
// 오버라이드 단축키 tos + ctrl + shift
@Override
public String toString() {
return "[" + title + ", " + author + "]";
}
// 테스트 코드
public static void main(String[] args) {
Book book = new Book("데미안", "헤르만 헤세");
System.out.println(book); // String 클래스가 재정의 한다. @Override
System.out.println("-------------------------");
String str1 = new String("안녕"); // String 클래스가 재정의 한다. @Override
System.out.println(str1);
}
}
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() {
// TODO Auto-generated method stub
return bookTypeId + ", " + title + ", " + author;
}
// Obejct 클래스에 있는 메서드를 재정의
@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);
}
}
'Java' 카테고리의 다른 글
| 2024.04.26 JAVA 유용한 클래스 String, StringBuffer 클래스 (0) | 2024.04.26 |
|---|---|
| 다형성 (Polymorphism) 업캐스팅, 다운캐스팅, 인터페이스 (0) | 2024.04.25 |
| 2024.04.25 Swing - 1 프로젝트 (0) | 2024.04.25 |
| 2024.04.25 인터페이스에 대한 고찰 (0) | 2024.04.25 |
| 2024.04.25 인터페이스(interface) (0) | 2024.04.25 |