Search
Duplicate
😀

07. 상속, 다형성, UML

태그
다형성의 활용 - (1) 이형집합 배열
Employee[ ] list ← Engineer , Manager Object[ ] list ← Engineer, Manager, Employee - 위와 같이 다형성을 활용하여 하위 클래스들의 집합을 하나의 배열로 관리할 수 있다! - 목적에 따라 담아만 놓을 것인지(Object), 자원으로 사용할 것인지(비즈니스 로직 최상위)에 따라 맞는 Data Type을 사용할 수 있다.
다형성의 활용 - (2) 매개변수의 다형성
XXX ( Employee e ){ }; ← Engineer, Manager - 위와 같이 다형성을 사용하여 모든 Case에 따라 오버로딩 할 필요 없이 하나의 함수로 메서드를 선언 가능! - 상위 Class에 담았기 때문에 하위 클래스의 고유 속성은 사용할 수 없다. - 하지만 상위 Class에 담았다 하더라도 자식에서 Override된 메서드의 경우 자식의 Method 가 호출된다!!!!
다형성의 활용 - (3) 리턴타입의 다형성
Employee XXX ( ) { return new Engineer(); return new Manager(); } - 매개변수 다형성과 같이 용도에 따라 활용 가능하다.
동적 바인딩
동적 바인딩 (Dynamic Binding) - 런타임시에 실제 객체 확인 후 객체에 바인딩 - Java의 다형성이 가능하도록 해주는 밑바탕이다 정적 바인딩 (Static Binding) - 컴파일 타임에 바인딩됨 ex) Employee e = new Engineer(); e.getInformation() Compile time : Employee의 getInfo로 간주 Runtime : Engineer의 getInfo로 간주 (생성한 주체가 Engineer니까 Engineer꺼로!!) ** 원래는 상위 타입으로 하위 타입 객체를 참조할 때 상위 타입의 기능밖에 사용 불가 (컴파일러가 허용을 안해서) ⇒ 동적 바인딩을 통해 하위 클래스에서 재정의된 메서드 사용 가능!!오버라이딩의 중요성 ( 부모 클래스에서 껍데기라도 만드는 이유)
UML (Unified Model Language)
UML - 다른 사람들과의 의사소통을 목적으로 함 - 전체 시스템의 구조 및 클래스의 의존성 파악 연관관계 ㄴ 연관은 있다. ㄴ 전체의 일부, 부분집합 (전체와 연관이 명확한 경우) ㄴ 단순집합 연관 (Aggregation) : ex) 컴퓨터와 GPU ㄴ 강한집합 연관 (Composition) : 부분이 전체 없이는 존재 못하는 관계 ex) 나무와 줄기, 나무와 나뭇잎
this
this - non-static 영역(instance 메서드, 생성자, instace initializer)에서만 사용할 수 있는 내장변수 - 현재 생성중인, 실행중인 그 객체 자기 자신을 일컬음 this의 사용 (1) 지역변수와 인스턴스 변수의 구분 (2) 생성자가 오버로딩된 경우, 자신의 또 다른 생성자 호출 (3) 자기자신의 객체를 메서드의 매개변수로 전달하거나 리턴
this의 메모리 구조
this는 Runtime 시점에 결정되고, Stack에 내장변수로서 존재한다.
super
- non-static 영역에서 사용되는 내장변수 - 현재 생성중인, 실행중인 객체의 부모를 의미하도록 사용하는 논리적인 개념 super의 사용법 (1) - 자신의 메소드와 부모의 메서드를 구분하기 위해 (메서드 재정의 상황에서) (2) - 자식의 생성자에서 부모의 생성자를 명시적으로 호출하기 위해