Object 클래스

Codren·2021년 6월 3일
0
post-custom-banner

Section 1. Object 클래스

1. java.lang 패키지

  • 프로그래밍 시 많이 사용하는 기본 클래스들이 속한 패키지
  • import 하지 않아도 자동으로 imort됨 (import.java.lang.*;)
  • 예) String, Integer, System... 등등



2. Object 클래스

모든 클래스의 최상위 클래스이며 java.lang 패키지에 존재함

  • Object 클래스의 메서드 중 일부는 재정의해서 사용할 수 있음
  • 컴파일러가 extends Object를 자동으로 추가함
    (class Student => class Student extends Object)



Section 2. Object 클래스 메서드

1. toString 메서드

  • 인스턴스를 String 으로 출력할 때 보여지는 정보를 지정하는 메서드
  • String이나 Integer 클래스는 이미 재정의 되어 있음 (각 객체의 값을 출력함)
  • toString()메서드 재정의 예
class Book{
	
	private String title;
	private String author;
	
	public Book(String title, String author) {
		this.title = title;
		this.author = author;
	}
	
	public String toString() {		# Book 인스턴스를 String으로 출력할 때 return 값을 출력함
		return title + "," + author;
	}
	
}




2. equals 메서드

  • 두 인스턴스의 주소 값을 비교하여 true/false를 반환 ( == 연산자와 동일한 기능)
  • 보통 두 인스턴스가 논리적으로 동일한지 여부를 따지기 위해서 재정의




3. hasCode 메서드

  • 힙메모리에 인스턴스가 저장되는 방식은 hash 방식
  • hashCode 메서드는 인스턴스의 저장 주소를 반환함
  • 객체를 hashCode 메서드의 입력으로 지정하면 저장되는 위치인 인덱스 값 반환
  • System.identityHashCode 메서드를 이용하면 원래의 hasCode 값을 얻을 수 있음




4. equals 와 hasCode 메서드

  • 두 인스턴스가 같다 = equals()의 반환 값이 true / 동일한 hashCode() 값을 반환
  • 논리적으로 동일함을 위해 equals() 메서드를 재정의 하였다면 hashCode()메서드도 재정의 하여 동일한 hashCode 값이 반환되도록 한다
public class Student {

	private int studentId;
	private String studentName;

	public Student(int studentId, String studentName)
	{
		this.studentId = studentId;
		this.studentName = studentName;
	}
	
	public boolean equals(Object obj) {			# equals 메서드 재정의
		if( obj instanceof Student) {
			Student std = (Student)obj;
			if(this.studentId == std.studentId )
				return true;
			else return false;
		}
		return false;
		
	}
	
	@Override
	public int hashCode() {				# equals 메서드에서 비교되는 멤버함수를 출력 
		return studentId;
	}
}




5. clone 메서드

  • 객체의 원본을 복제하는데 사용하는 메서드
  • clone 메서드는 객체 지향 프로그램에서의 정보 은닉, 객체 보호의 관점에서 위배될 수 있음
  • 해당 클래스의 clone 메서드의 사용을 허용한다는 의미로 Cloneable 인터페이스를 명시해 줌
public class Student implements Cloneable{	# Cloneable

    .......

	@Override
	protected Object clone() throws CloneNotSupportedException {
		// TODO Auto-generated method stub
		return super.clone();
	}
}
post-custom-banner

0개의 댓글