티스토리 뷰
자바의 Object 클래스란 ? 자바 API의 모든 클래스와 사용자가 정의한 모든 클래스의 최상위 클래스이다.
즉, 모든 자바 클래스들은 Object 클래스를 상속받는다.
ex ) class A extends B
A클래스는 B클래스를 상속받았으며, Object 클래스도 묵시적으로 상속받았다고 볼 수 있다.
* Object 클래스의 주요메소드
메소드 |
용도 |
boolean equals(object obj) |
두 개의 객체가 같은지 비교한다. 반환형은 boolean (true, false) |
String toString() |
현재 객체의 문자열을 반환한다. (오버라이딩을 사용하여 현재 객체의 초기화된 멤버변수를 알 수 있다.) |
Object clone() |
객체를 복사한다. |
Class getClass() |
객체의 클래스형을 반환한다.
|
void finalize() |
가비지 컬렉션 (GC) 직전에 객체의 리소스를 정리할 때 호출한다. |
int hashCode() |
객체의 해쉬코드값을 반환한다. |
Object 클래스에 해당하는 메소드는 더 많습니다.
이 외의 자세한 정보는 API를 확인 하시면 됩니다. Java Object API
이론을 배웠으면 실습을 통해 공부하겠습니다.
Object 클래스를 상속받은 toString(), equals() 메소드를 사용하는 메인 클래스 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | public class ExampleObject{ public static void main(String[] args) { // 1 ) toString // 2 ) equals A a 1 = new A( 10 ); A a 2 = new A( 10 ); // a 1 을 대입할 경우 아래 if 문에서 true String str = a 1 .toString(); System.out.println(a 1 ); System.out.println(str); // A == B -> A와 B가 같은가? -> A의 값과 B의 값이 같은가? if (a 1 == a 2 ) { System.out.println( "a1과 a2가 같다." ); } else if (a 1 .equals(a 2 )) { System.out.println( "equals" ); } else { System.out.println( "a1과 a2가 다르다." ); } Person p 1 = new Person( "A" , 25 , "0313" ); Person p 2 = new Person( "A" , 25 , "0313" ); // 동등 연산자 (==) 사용 if (p 1 == p 2 ) { System.out.println( "같은 사람" ); } else { System.out.println( "다른 사람" ); } // Object 클래스의 equals 사용 // p 1 을 기준으로 p 2 를 비교하겠다. // p 2 .equals(p 1 ) => p 2 를 기준으로 p 1 을 비교 // Object 클래스에서는 기본적으로 equals 메소드를 동등 연산자와 동일하게 사용한다. // -> 메모리 주소값 비교 // Overring을 사용하여 메소드 재정의를 통해 멤버변수 값을 비교하여 같은 사람이 된다. if (p 1 .equals(p 2 )) { System.out.println( "같은 사람" ); } else { System.out.println( "다른 사람" ); } } } |
Object 클래스로부터 상속받은 toString() 메소드를 오버라이딩한 A 클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class A { // object클래스를 상속받고 있다. private int num; // public A(){ // System.out.println( "A() 생성" ); // } public A(int num) { this.num = num; } @Override public String toString() { String str = super .toString(); return "A [num=" + num + "]" +str; } } |
A클래스를 상속받은 B클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public class B extends A { private int num 2 ; // public B(){ // System.out.println( "B() 생성" ); // } // 부모클래스의 생성자에 매개변수가 있으면 // 자식클래스에서 부모클래스의 매개변수까지 // 받아내어 명시적으로 부모클래스의 인스턴스를 // 만들어 내야한다. public B(int num 1 , int num 2 ) { // super ()위에 어떠한 코드가 들어가게 되면 자식클래스 생성자가 먼저 생성되어야 하므로 Error발생! // super 키워드 위에 코드가 존재한다는 이야기는 // 부모클래스가 만들어지지도 않았는데 자식 클래스에서 // 무엇인가를 진행한다는 이야기이다. 따라서 suer키워드 위쪽 코드에는 // 어떠한 코드도 들어갈 수 없다. // 부모클래스의 생성자에 매개변수가 없다면 super 키워드를 사용하지 않아도 된다. // System.out.println( "Hello" ); super (num 1 ); // 부모클래스의 생성자 호출 } public void goo() { // A a= super ( 10 ); // B 클래스입장에서 기반으로 하는 클래스를 만드는 것. // A a 1 = new A( 10 ); // 새로운 객체를 만드는 것 } } |
Object 클래스를 상속받아 toString() , equals() 메소드를 오버라이딩한 Person 클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public class Person { private String name; private int age; private String birthday; public Person(String name, int age, String birthday) { this.name = name; this.age = age; this.birthday = birthday; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", birthday=" + birthday + "]" ; } @Override public boolean equals(Object obj) { Person temp = (Person) obj; boolean equals_condition = (this.age == temp.age) && (this.name.equals(temp.name)) && (this.birthday == temp.birthday); return equals_condition; } } |
'프로그래밍 > Java' 카테고리의 다른 글
자바 ! 예외처리 ( Exception , try ~ catch ~ finally) (0) | 2017.05.08 |
---|---|
자바 ! 다형성 ( Polymorphism , Upcasting , Downcasting ) (0) | 2017.05.05 |
자바 ! 인터페이스 (interface) (0) | 2017.04.30 |
자바 ! 오버라이딩, 추상클래스 (overriding, abstract) (1) | 2017.04.26 |
자바 ! 생성자 오버로딩과 this 키워드 (0) | 2017.04.25 |