Java. 오버라이딩

kimkim·2024년 9월 9일
0

Java. 공부내용정리

목록 보기
23/38

상속

  • 상속은 같은 공통적인 부분을 한 클래스로 만들어 다른 클래스의 속성 안에 공통 클래스를 같이 출력할 수 있게 만들어 준다.

오버라이딩

예시 1

1흰오리와 2청둥오리가 있다.
각각의 오리는 날 수 있다.
공통적인 특징으로 3오리라는 부모클래스를 만들어 날 수 있다 라는 기능을 넣고 흰오리와 청둥오리를 자식클래스로 만든다.

4고무오리가 추가되었다.
고무오리는 날 수 없다.
이때 공통적인 특징에서 약간 다른 버전이 나오는 것이다.

새로운 매서드로 만들어서 쓸 수 도 있지만
부모로 받은 기능을 재정의 해서 쓸 수도 있다.

부모에게 받은 기능, 매서드를 같은 이름의 매서드로 재정의 하는 것을 오버라이딩이라고 한다

public class inheritance{
	public static void main(String[] args){
    
    //1. 흰오리 객체를 새로 만들어서 매서드 실행
    WhiteDuck whiteDuck = new WhiteDuck();
    whiteDuck.fly();
    // 결과 : 날 수 있어요
    
    //2. 청둥오리 객체를 새로 만들어서 메서드 실행
    Mallard mallard = new Mallard();
    mallard.fly();
    // 결과 : 날 수 있어요
    
    //4. 고무오리 객체를 새로 만들어서 메서드 실행
    RubberDuck rubberDuck = new RubberDuck();
    rubberDuck.fly();
    // 결과 : 날 수 없어요..
    }
}

// 3. 오리들에게 날다라는 기능을 물려줄 부모클래스 Duck
class Duck {
	void fly(){System.out.println("날 수 있어요")}
}

//1. 흰오리 자식클래스에 부모클래스 Duck의 기능을 물려줌
class WhiteDuck extends Duck{
}

//2. 청둥오리 자식클래스에 부모클래스 Duck의 기능을 물려줌
class Mallard extends Duck{
}

//4. 고무오리 자식클래스에 부모클래스 Duck의 기능을 물려줌
class RubberDuck extends Duck{
	void fly(){System.out.println("날 수 없어요..")}
    // > 오버라이드
    // 부모에게 물려받은 기능을 재 정의함
}

예시 2

public class ConsturcterChain {
    public static void main(String[] args) {
        WhiteDuck d1 = new WhiteDuck();
        d1.fly();
        // 실행 순서
        // 부모클래스 고유기능 > 자식클래스 기능
        // 부모 : Duck이 생성됩니다.
		// 자식 : WhiteDuck이 생성됩니다.
		// 자식 : 오리가 안 납니다.(오버라이드)
    }
}

// 1. Duck 부모 클래스 생성
class Duck{
    public Duck(){
        System.out.println("Duck이 생성됩니다.");
    }
    public void fly(){
        System.out.println("오리가 납니다.");
    }
}

// 2. WhiteDuck 자식 클래스 생성 후 부모 클래스 연결
class  WhiteDuck extends Duck {
    public WhiteDuck(){
        System.out.println("WhiteDuck이 생성됩니다.");
    }
    public void fly(){
        System.out.println("오리가 안 납니다.");
    }
    // 부모 클래스 기능의 오버라이드
}

매서드 오버라이드

  • 매저스 재정의 => 부모가 물려준 능력을 새로 구현한다.

중요 포인트

  • 객체는 자기 자신이 가지고 있는 것을 우선적으로 사용한다.
  • 상속은 부모에게서 자식은 능력을 확장시키디만 동일한 이름은 자기자신을 우선적으료 사용한다.

0개의 댓글