선릉역 1번 출구

6. 자바의 특징 본문

Language/Java

6. 자바의 특징

choideu 2023. 11. 23. 13:33

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