본문 바로가기
언어/java

[Java] 7. 상속 (1) - 1~4

by 젼젼39 2025. 5. 20.

7.1 상속 개념

    (+) 중복되는 코드를 줄여 개발 시간 단축
    (+) 클래스의 수정을 최소화 : 부모 클래스 수정 시 모든 자식 클래스에 수정 효과 적용됨

 

7.2 클래스 상속

    - 자식 클래스 선언 시 어떤 부모로부터 상속받을 것인지를 결정; 부모 클래스를 extends 뒤에 기술

public class 자식클래스 extends 부모클래스 {
}

    - 자바는 다중 상속을 허용하지 않음; 여러 개의 부모 클래스 상속 불가능 == extends 뒤에는 단 하나의 부모 클래스만이 옴

 

7.3 부모 생성자 호출

    - 자식 객체 생성 시 부모 객체가 먼저 생성된 후 자식 객체가 생성됨

    - 부모 생성자는 자식 생성자의 맨 첫 줄에 숨겨져 있는 super()에 의해 호출됨; 컴파일 과정에서 자동 추가됨, 생략가능!

    - 부모 클래스에 기본 생성자가 없고 매개변수를 갖는 생성자만 있다면 -> super(매개값, ...) 코드를 직접 넣어야 함

 

7.4 메소드 재정의

(1) 메소드 오버라이딩

    : 상속된 메소드를 자식 클래스에서 재정의하는 것

    - 메소드 오버라이딩 시, 자식 메소드가 부모 메소드보다 우선적으로 사용됨!

*주의해야할 것들
    - 부모 메소드의 선언부(리턴 타입, 메소드 이름, 매개변수)와 동일해야 함
    - 접근 제한을 더 강하게 오버라이딩할 수 없음 (예: public -> private으로 변경 불가)
    - 새로운 예외를 throws 할 수 없음

(2) 부모 메소드 호출

    - 메소드 재정의 시, 자식 메소드가 부모 메소드의 내용을 가지고 별도의 내용을 추가하는 경우, super 키워드와 도트 연산자로 자식 메소드 내에서 부모 매소드 호출 가능 

class Parent {
	public void method(){
    	//작업 처리 1
    }
}

class Child extends Parent{
	@Override
    public void method(){
    	super.method(); //부모 메소드 호출
        //작업 처리 2
    }
}

    - super.method(); 의 위치는 어디든지 가능; if문 안에도 가능!

'언어 > java' 카테고리의 다른 글

[Java] 7. 상속 (4) - 10~11  (0) 2025.05.22
[Java] 7. 상속 (2) - 5~6  (0) 2025.05.20
[Java] 6. 클래스 (6) - singleton  (0) 2025.05.17
[Java] 6. 클래스 (5) - 13~15  (0) 2025.05.14
[Java] 6. 클래스 (4) - 11~12  (0) 2025.05.13