Java

Object 클래스

H_u 2024. 4. 25. 17:25
728x90
반응형
SMALL

💡 학습 목표

  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 basic.useful;

 

import java.lang.*;

/**

* Object 클래스는 모든 클래스의 최상위 클래스이다.

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

* 자바는 단일 상속만 지원 합니다. 단, Object 클래스를 제외 한다!!

*/

public class Book extends Object{

 

private String title;

private String author;

 

public Book(String title, String author) {

this.title = title;

this.author = author;

}

@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("안녕");

System.out.println(str1);

}

}

 

 

equals() 메서드

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

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

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

 

package basic.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;

}

//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) {

Book myBook1 = new Book("흐르는강물처럼", "파울로코엘료");

 

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);

 

if (book1.equals(book2)) {

System.out.println("같은 주소를 가리킨다.");

} else {

System.out.println("아니야 다른 주소야");

}

System.out.println(book1);

System.out.println(book2);

}

}

728x90
반응형
SMALL

'Java' 카테고리의 다른 글

인터페이스 활용  (1) 2024.04.26
String, StringBuffer 클래스  (1) 2024.04.26
인터페이스에 대한 고찰  (1) 2024.04.25
중요한! 인터페이스(interface)  (0) 2024.04.25
추상 클래스(abstract class)  (0) 2024.04.25