반응형
상속이란?
객체 지향의 상속(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);
}
}
출처 - 상명대 객체지향프로그래밍 강의
반응형
'CS > OOP' 카테고리의 다른 글
[OOP] 좋은 객체 지향 설계의 5가지 원칙이란?(SOLID) (0) | 2021.08.13 |
---|---|
인터페이스(Interface)와 추상 클래스(abstract class) [JAVA] (0) | 2021.03.15 |
클래스들의 관계[JAVA] (0) | 2021.03.06 |
클래스(Class) [JAVA] (0) | 2021.02.24 |