[기초] 시리즈는 본강의를 수강후 정리한 글들 입니다.
Strongly typed Language vs Loosely typed language
- Strongly typed Language
- 데이터의 타입을 미리 정의하고 사용하고, 한번 정의된 데이터 타입은 프로그램 종료까지 변하지 않는 것
- 프로그램 개발에 있어 명확함과 구체성을 제공
- 많은 프로그램 언어들이 적용하고 있음. (자바, C++ ...)
- 다만, 프로그램의 유연성 제약이라는 단점
- Loosely typed language
- Javascript
객체 간 타입 형 변환
- 자바에서 예외적으로 Strongly typed language가 적용되지 않는 경우가 있음
- up-casting
- 상속 관계에서 자식 클래스가 부모 클래스 타입으로 참조되는 것이 허용
- down-casting
- 한번 부모 클래스 타입의 클래스로 참조가 이루어진 이후 다시 자식 클래스로 참조하는 것
객체간 타입 형변환 시 메소드
- 상속관계가 성립되어 있고 자식 클래스의 인스턴스가 부모 클래스 타입의 변수로 참조되면 실제 인스턴스화 객체가 자식 객체일 경우에도 자식 클래스가 갖고 있는 인스턴스 메소드는 호출할 수 없음.
- 부모 클래스 타입의 변수로 참고하고 있는 자식 인스턴스 객체의 메소드를 호출하기 위해서는 down-casting이 이루어져야 함.
- 단, 재정의 하고 있는 메소드(오버라이딩된 메소드)의 경우 up-casting 상황에서도 자식 클래스의 재정의 메소드가 호출
- up-casting 되어있을 때 부모 클래스와 자식클래스에서 겹치는 메소드를 호출했을 때는 자식클래스의 메소드가 호출된다!
- 오버라이딩된 메소드는 부모 클래스의 타입을 띄고 있을지라도 자식 객체의 메소드가 호출이 된다
- 자식 객체에만 있는 메소드를 호출하려는 경우 down-casting을 먼저 꼭 해주어야 함.
객체간 타입 형변환의 이점
- 상속 관계에서 객체간의 타입 형변환은 객체를 관리하는데 있어 큰 이점을 제공
- 자식 클래스가 부모 클래스 타입의 변수로 참조 가능하기 때문에 같은 부모 클래스를 상속하는 모든 자식 클래스들을 하나의 타입으로 관리 가능
- 이와 같은 객체의 관리는 프로그램의 복잡성을 크게 개선 가능
다형성 polymorphism
- 다형성 polymorphism
- 하나의 객체가 다양한 형태로 처리될 수 있는 특성
- poly (many) + Morphism (Behavior)
- 다형성을 구현하기 위한 조건
- 상속
- 재정의 메소드(오버라이딩)
- 객체간의 형변환(up-casting)
- 다형성의 이형 집합을 통한 구현 방식과 파라미터를 통한 구현 방식으로 구분 가능 (이렇게 두가지가 존재한다 정도로만 이해)
- 하나의 객체가 다양한 형태로 처리될 수 있는 특성
'☕JAVA > 🐣 강의 [JAVA]' 카테고리의 다른 글
[JAVA][기초] 추상 클래스 abstract class 와 인터페이스 interface (0) | 2022.10.12 |
---|---|
[JAVA][기초] Object 클래스와 메소드 (0) | 2022.10.12 |
[JAVA][기초] 상속 과 오버라이딩 Overriding (0) | 2022.10.07 |
[JAVA][기초] 패키지 Package & 패키지 구성 (0) | 2022.10.07 |
[JAVA][기초] Static 과 final (0) | 2022.10.05 |