CS/OOP

상속(inheritance) [JAVA]

장그래 2021. 3. 15. 21:06
반응형

상속이란?

  • 객체 지향의 상속(inheritance)은 한 클래스가 기존 클래스의 속성이나 기능(메소드)을 재사용(reuse)하면서 자신의 새로운 속성이나 기능을 추가해서 확장(extend)하거나 기존 기능을 정제하고 개선(refine)하는 구현 방식

  • 부모 클래스

    • 기존 클래스
  • 자식 클래스

    • 확장되거나 개선된 클래스
  • 자식 클래스는 부모 클래스의 모든 속성과 함수들을 상속 받지만, 부모 클래스에서 자식 클래스가 접근할 수 있는 속성과 메소드를 지정 가능

  • 부모 클래스는 한 개 이상의 자식 클래스와 관계를 맺는 계층 구조로 표현 가능

    • 공통 부분을 부모 클래스에, 서로 다른 부분은 자식 클래스에 구현 가능
    class Child extends Parent {
    
    }
    

    • 상속은 클래스를 만드는 것과 비슷하게, 코드의 재사용성을 높이는 것을 목표로 함

    업캐스팅(upcasting)

    • 부모 클래스형 변수에 자식 클래스 객체를 저장

    오버라이딩(overriding)

    • 부모 클래스 메소드를 오버라이딩
    • 부모 클래스에 있는 함수를 동일하게 자식 클래스에서 다시 구현
    • 함수가 오버라이드 되었다고 함

오버라이딩과 오버로딩

  • 똑같은 함수를 다시 구현하면 오버라이딩
    • 실행하면서 어떤 객체의 함수가 호출될지 결정됨
  • 시그니처가 달라지면 오버로딩
    • 컴파일 할 때 어떤 함수가 호출될지 결정됨
 오버라이딩오버로딩
함수 이름같다 같다
입력 변수
(argument)
같다다르다
구별 시점실정(runtime)컴파일(compile time)
class Arabica extends CoffeeBean {
    @Override 
    void print(){ //오버라이딩된 함수
        System.out.println("Arabica coffee ..");
    }
       void print(String s){ // 오버로딩된 함수
        System.out.printf("%s: %s \n", species, s);
    }
}

출처 - 상명대 객체지향프로그래밍 강의

반응형