버글버글

Java 수업 기록 (11) Object 본문

java/java 수업 기록

Java 수업 기록 (11) Object

Bugle 2022. 8. 2. 14:00
반응형

Object 

1. 패키지 : Java.lang

2. 모든 클래스의 슈퍼클래스

  - 모든 클래스는 명시하지 않아도 강제로 Object 클래스를 상속 받음

  - 모든 클래스의 타입으로 사용할 수 있음

  - 모든 클래스가 사용할 수 있는 공통 메소드를 가지고 있음

3. Object 클래스는 모든 객체(변수)를 저장할 수 있다.

  (equals, toString 등)

4. Object 클래스타입의 객체는 항상 다운캐스팅해서 사용해야 한다.

5. Object에 저장된 객체는 캐스팅 해서 사용해야 한다.

6. 객체 정보 확인을 위해서는 toString() 메소드를 만든다.(Override)

7. 객체 정보 비교를 위해서는 equals() 메소드를 만든다.(Override)

8. 주요 공통 메소드

메소드 역할
boolean equals(Object obj) 매개변수 obj 객체와 현재 객체가 동일하면 true 반환
Class<T> getClass() 현재 객체의 클래스타입을 반환
int hashCode() 현재 객체의 해시코드를 반환
String to String() 현재 객체의 정보를 문자열 형태로 반환
void notify() 현재 객체의 대기(wait)중인 하나의 스레드를 깨움
void notifyAll() 현재 객체의 대기(wait)중인 모든 스레드를 깨움
void wait() 현재 스레드를 일시적으로 대기(wait)시킴
public class Person {
	
	public void eat() {
		System.out.println("먹는다.");
	}
public class Main {

	public static void main(String[] args) {

		Object p = new Person();

		if(p instanceof Person) {
			((Person) p).eat();
		}

	}

▶ to string  

1. 객체 정보를 문자열로 변환하는 메소드

2. Object안에 toString은 평생 도움 될 일이 없다. (이상한 값이 나옴)

3. 그래서 문자열로 변환을 하려면 Object 클래스의 to string을 안쓰기 위해 오버라이드를 해 줘야 한다.

4. 소스탭에 to string 만드는 메소드도 있다.

	@Override
	public String toString() {
		return "이름 : " + name;	// System.out.println(person); 여기에서 사용 됨.
	}
		Object p = new Person();
			
		Person person = new Person();
		person.setName("james");
		
		System.out.println(person);		// 이름 : james

▶ equals() 

1. Object 클래스의 equals()는 참조값을 비교한다. (문자열 비교 x)

2. 문자열 비교를 하려면 Object객체에의 equals() 메소드에 오버라이드를 해야한다.

3. 소스탭에 equals 만드는 메소드도 있다. (못찾겠음. . . )

	@Override
	public boolean equals(Object anObject) { 	// p1. equals(p2)에서 사용됨.
		Person p = (Person) anObject;		 	// 펄슨타입으로 캐스팅
		return name.equals(p.name);				// equals(String에 가지고 있는)
		Person p1 = new Person();
		Person p2 = new Person();
		p1.setName("kim");
		p2.setName("kim");
		
		System.out.println(p1.equals(p2));	// true
반응형