반응형
1. object 클래스의 개념
- 모든 Java 클래스의 최선조 클래스
- 모든 Java 클래스는 무조건 Object 클래스를 상속받아 사용 가능
- 직접상속도 가능
- 간접상속도 가능
2. 클래스 선언 시 상속받은 부모클래스가 없는 경우는?
//부모를 상속받지 않으면 기본적으로 Object클래스를 자동으로 상속받음
public class Car /* extends Object */{
}
3. object 클래스 객체는 왜 중요할까?
- 기본적으로 부모클래스의 참조변수에는 자식클래스의 객체를 저장할 수 있다.
- 즉, Object클래스의 참조변수에는 모든클래스의 객체를 저장할 수 있다!!!
- 매개변수가 (Object obj) 이다 = 어떤 객체든 매개변수로 전달받을 수 있다!
- 반환형이 Object 이다 = 어떤 객체든 반환받을 수 있다!
- 다시말해, 모든 클래스들을 대표해서 표현하는 것이 Object클래스
public obeject Method명 (obeject obj) {
// 어떤 객체든 매개변수로 받을 수 있다.
// 어떤 객체든 반환이 가능하다.
}
4. [object의 API] Object.toString()
- 참조변수에 저장된 객체정보(메모리주소-hashcode)를 문자열로 변환하여 반환하는 메소드
- 객체값이 아닌 메모리 주소를 반환하는 것이라 쓸 일은 거의 없음
System.out.println(car.toString());
//inheritance.Car@5aaa6d82
//위와 아래는 동일한 실행 코드
//참조변수를 출력할 경우 자동으로 Object 클래스의 toString() 메소드가 호출됨
System.out.println(car);
//inheritance.Car@5aaa6d82
5. Object.toString()의 오버라이드 선언
- Object클래스의 toString()메소드를 오버라이드선언한 예시
- ex.
- String.toString() : String 클래스의 toString() 메소드
- Date.toString() : Date 클래스의 toString() 메소드
inheritance > Car클래스 - Car.toString()
package inheritance;
//자동차정보(모델명, 소유자명)를 저장하기 위한 클래스 - 🔥VO클래스
//=> 필드값을 문자열로 결합시켜 반환하는 "오버라이드된 toString메소드" 이용
//=> 이를 통해 필드에 어떤 값이 저장되어 있는지 확인할 것임
public class Car /*extends Object*/{
//필드
private String modelName;
private String userName;
//생성자
public Car() {}
public Car(String modelName, String userName) {
super();
this.modelName = modelName;
this.userName = userName;
}
//Setter&Getter
public String getModelName() {return modelName;}
public void setModelName(String modelName) {this.modelName = modelName;}
public String getUserName() {return userName;}
public void setUserName(String userName) {this.userName = userName;}
//Object클래스의 toString()메소드를 오버라이드 선언
// => Object클래스의 toString()메소드는 숨겨지고
// => Car클래스의 toString()메소드가 호출됨
// => 🔥VO 클래스에서는 필드값을 문자열로 변환하여 반환 처리되도록 작성함
// => 왜? 필드값을 확인하기 위해서
@Override
public String toString() {//모든 필드값들을 결합시켜 반환하는 오버라이드된 toString메소드
return "모델명 = " + modelName + ", 소유자 = " + userName;
}
}
inheritance > CarApp 클래스
package inheritance;
public class CarApp {
public static void main(String[] args) {
Car car = new Car("싼타페","홍길동");
System.out.println("모델명 = " + car.getModelName()); //모델명 = 싼타페
System.out.println("모델명 = " + car.getUserName()); //모델명 = 홍길동
/*
//오버라이드선언으로 더 이상 메모리주소가 출력되지 않음
System.out.println(car.toString());
//inheritance.Car@5aaa6d82
//참조변수를 출력할 경우 자동으로 Object 클래스의 toString() 메소드가 호출됨
//System.out.println(car);
inheritance.Car@5aaa6d82
*/
//Object클래스의 toString()메소드를 자식클래스인 Car클래스에서 오버라이드 선언하였기 때문에 자식클래스의 메소드가 호출된다.
System.out.println(car); //모델명 = 싼타페, 소유자 = 홍길동
//참조변수를 출력할 경우 자동으로 String 클래스의 toString() 메소드가 호출됨
System.out.println(car.toString()); //모델명 = 싼타페, 소유자 = 홍길동
}
}
6. String.toString()
- String객체에 저장된 문자열을 반환하는 메소드
- Object.toString()을 이미 오버라이드해 사용하고 있음
public class Str { public static void main(String[] args) { String name = "홍길동"; System.out.println(name.toString()); //홍길동 //참조변수 출력 시 toString() 메소드 호출 생략 가능 System.out.println(name); //홍길동 } }
7. String.equals(Object obj)
- equals(Object obj)을 이미 오버라이드해 사용하고 있음
반응형
'java > inheritance' 카테고리의 다른 글
[inheritance] 9. 사원 급여 관리 프로그램 (EmployeeApp) (0) | 2024.04.24 |
---|---|
[inheritance] 8. 제한자 (abstract, final, static) (0) | 2024.04.24 |
[inheritance] 6. 학원인적자원관리 ERP프로그램 (AcademyApp) (2) | 2024.04.23 |
[inheritance] 5. 메소드 오버라이드(Method override) (0) | 2024.04.22 |
[inheritance] 4. super키워드의 개념 (0) | 2024.04.21 |