반응형
- 메소드 재정의(Override)
- 메소드
- 상위클래스에서 상속된 메소드를 하위클래스 재정의
- 비정적 메소드에만 해당한다.
- 메소드 오버라이딩 조건
- 부모 클래스의 메소드와 동일한 시그니처 가져야 한다.
- 접근 제한을 더 강하게 제한 할 수 없다.
- – public을 default나 private으로 수정 불가
- – 반대로 default는 public 으로 수정 가능
- 새로운 예외(Exception) throws 불가
// 부모 클래스
public class Airplane {
public void land() {
System.out.println("착륙");
}
public void takeOff() {
System.out.println("이륙");
}
public void fly() { // 오버라이딩 대상
System.out.println("일반비행");
}
}
================================================
// 자식 클래스
public class SupersonicAirplane extends Airplane{
// 상수 정의
public static final int NORMAL = 1;
public static final int SUPERSONIC = 2;
public int flyMode = NORMAL;
@Override
public void fly() {
if(flyMode == SUPERSONIC) {
System.out.println("초음속 비행");
} else {
super.fly();
}
}
}
================================================
public class AirplaneExample {
public static void main(String[] args) {
SupersonicAirplane sa = new SupersonicAirplane();
sa.flyMode = SupersonicAirplane.SUPERSONIC;
sa.fly(); // 초음속 비행
sa.flyMode = SupersonicAirplane.NORMAL;
sa.fly(); // 일반비행
}
}
@Override 어노테이션
- 메소드 오버라이딩을 할 때 컴파일러에게 이 메소드는 상위클래스의 메소드를 오버라이딩 하겠다는 의도를 컴파일러에게 전달한다.
- 이 어노테이션이 붙은 메소드는 상위클래스에 정의된 메소드와 선언부(시그니처)가 일치해야 한다.
- toString()메소드
- toString()메소드는 Object클래스에 정의 되어있다.
- 모든 클래스는 암묵적으로 Object 클래스를 상속한다.
- 따라서 모든 객체는 Object에 정의된 메소드를 사용할 수 있다.
- Object 클래스의 toString()메소드는 다음과 같이 정의 되어있다.
public class Member {
private int id;
private String userName;
private String password;
private String email;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
`
` // Getter, Setter 만들어주고
`
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
// toString() 만들어준다
@Override
public String toString() {
return "Member [id=" + id + ", userName=" + userName + ", password=" + password + ", email=" + email + "]";
}
}
==========================================
public class MemberExample {
public static void main(String[] args) {
Member member = new Member();
member.setId(1);
member.setUserName("고길동");
member.setPassword("1234");
member.setEmail("go@example.com");
System.out.println(member);
}
}
- toString() 만드는 법
- 빈곳에 커서 둔후 shift + alt + s
- Generate toString()... 선택후
- 만들것 체크하고 Generate 버튼 클릭
반응형
'학습 > JAVA' 카테고리의 다른 글
7. 상속(Inheritance) (강제타입 변환, instanceof, 추상(abstract)클래스 (0) | 2022.10.17 |
---|---|
7. 상속(Inheritance) (Override 불가, 다형성, List<E>) (0) | 2022.10.12 |
7. 상속(Inheritance) (상속, 부모 생성자 호출 super()) (0) | 2022.10.11 |
6. 클래스(정적(static), 인스턴스, 싱글톤(singleton), 상수, 접근 제한자, Getter & Setter (1) | 2022.10.07 |
6. 클래스(메소드, 인스턴스 멤버와 this) (0) | 2022.10.06 |
댓글