본문 바로가기
학습/JAVA

7. 상속(Inheritance) (Override, Annotation, toString())

by Elfen Lied 2022. 10. 11.
반응형

- 메소드 재정의(Override)

- 메소드

  • 상위클래스에서 상속된 메소드를 하위클래스 재정의
  • 비정적 메소드에만 해당한다.
  • 메소드 오버라이딩 조건
    • 부모 클래스의 메소드와 동일한 시그니처 가져야 한다.
    • 접근 제한을 더 강하게 제한 할 수 없다.
      1. – public을 default나 private으로 수정 불가
      2. – 반대로 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() 만드는 법

  1. 빈곳에 커서 둔후 shift + alt + s
  2. Generate toString()... 선택후
  3. 만들것 체크하고 Generate 버튼 클릭

 

 

반응형

댓글