선릉역 1번 출구
6. 자바의 특징 본문
1. 상속
- extends
- 단 하나의 클래스 상속만이 가능함(single inheritance)
- 언제 상속을 구현하는가?
- 상위 클래스는 하위 클래스보다 더 일반적인 개념과 기능을 가짐
- 하위 클래스는 상위 클래스보다 더 구체적인 개념과 기능을 가짐
- 하위 클래스가 상위 클래스의 속성과 기능을 확장함
- 업캐스팅
class Animal {
void sound() {
System.out.println("Animal makes a sound");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("Cat meows");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Cat(); // 하위 클래스로 객체를 생성하고 상위 클래스로 업캐스팅
animal.sound(); // Cat의 오버라이딩된 메소드가 호출됨
}
}
- 상속 관계에서 하위 클래스로 객체를 생성하고 상위 클래스로 업캐스팅한 경우
- 멤버 변수: 업캐스팅된 객체의 타입에 따라 접근이 제한, 상위 클래스의 멤버 변수에만 직접 접근 가능
- 메소드: 업캐스팅된 객체를 통해 메소드를 호출해도, 메소드는 객체 "실제 타입"의 오버라이딩된 메소드가 호출됨
- 위의 예제에서 animal.sound()시에 실제 객체인 Cat의 sound() 메소드가 실행되어 "Cat meows"가 출력됨
- 오버라이딩 된 경우임!!, 오버라이딩 되지 않은 메소드는 상위 클래스나 하위 클래스나 동일한 Code 영역의 메소드를 참조함
출처: https://gitlab.com/easyspubjava/javacoursework/-/tree/master/Chapter3/3-05?ref_type=heads - 결론 클래스의 메소드 호출 시 가상 메서드 테이블에 등록된 메서드 주소를 호출함
- (클래스마다, 클래스가 매핑되는 테이블이 있음)
2. 다형성
- 상속 후 하위 클래스를 상위 클래스 하나의 type으로 핸들링이 가능함
- 상위 클래스에서는 공통적인 부분을 제공하고 하위 클래스에서는 각 클래스에 맞는 기능 구현
3. 은닉 & 캡슐화
'Language > Java' 카테고리의 다른 글
8. 템플릿 메서드 패턴(template method pattern) (0) | 2023.11.23 |
---|---|
7. 추상 클래스 (0) | 2023.11.23 |
5. 배열의 정규화 (0) | 2023.11.21 |
4. 얕은 복사 vs 깊은 복사 (2) | 2023.11.21 |
3. 싱글톤 패턴(singleton pattern) (0) | 2023.11.21 |
Comments