상속 (Inharitance)

박주현·2022년 10월 14일
0

국비 공부

목록 보기
14/44

상속의 선언

// 부모 클래스
class SuperClass {
	// 필드
    // 메서드
}

// 자식 클래스
class SubClass extends SuperClass {
	// 필드
    // 메서드
}
  • 상속은 is -a 관계
    원은 도형이다.
    사과는 과일이다.
    Tendem은 Bike이다
public class Circle {
	@SuppressWarnings("unused")
	private void secret() {
		System.out.println("비밀이다.");
	}

	protected void findRdius() {
		System.out.println("반지름이 10.0센티 이다.");
	}

	public void findArea() {
		System.out.println("넓이는 (PI * 반지름 * 반지름)이다.");
	}
}

public class Ball extends Circle {
	private String color;

	public Ball(String color) {
		this.color = color;
	}

	public void findColor() {
		System.out.println(color + " 공이다.");
	}

	public void findVolume() {
		System.out.println("부피는 4/3*(PI * 반지름 * 반지름 * 반지름)이다.");
	}

	@Override		// annotation, Overriding
	public void findArea() {
		System.out.println("넓이는 4 * (PI * 반지름 * 반지름)이다.");
	}

}

메서드 Overloading 메서드 Overriding

메서드이름 : 동일하다. 동일하다.
매개변수 : 동일하다. 다르다.
반환 타입 : 동일하다. 관계없다.
상속 관계 : 필요하다. 필요없다.
예외와 접근 범위 : 제약이 있다. 제약이 없다.
바인딩 : OL : 호출할메서드를 실행중 결정하는 동적 바인딩이다.
OR : 호출할 메서드를 컴파일할 때 결정하는 정적 바인딩이다.

super() : 부모 클래스의 생성자를 부른다.
this() : 현재 클래스의 현재 생성자 외 다른 생성자를 부른다.


메서드 오버라이딩 규칙

  • 부모 클래스의 메서드와 동일한 시그니처를 사용한다. 심지어 반환 타입까지 동일해야 한다.
  • 부모 클래스의 메서드보다 접근 범위를 더 좁게 수정할 수 없다.
  • 추가적인 예외가 발생할 수 있음을 나타낼 수 없다.

Annotation : @Overriding을 써줘야지만 문법적 오류를 확인할 수 있다.

0개의 댓글