일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 이차전지관련주
- 이펙티브자바
- java
- k8s
- 김영한
- 카카오 면접
- Effective Java 3
- 예제로 배우는 스프링 입문
- 이펙티브 자바
- 스프링 핵심원리
- effectivejava
- Spring
- ElasticSearch
- 알고리즘정렬
- Sort
- 오블완
- JavaScript
- 카카오
- Effective Java
- 클린아키텍처
- 엘라스틱서치
- 티스토리챌린지
- 코딩테스트
- kubernetes
- 자바
- 스프링핵심원리
- 스프링부트
- 자바스크립트
- 알고리즘
- 스프링
- Today
- Total
Kim-Baek 개발자 이야기
자바 기본 (15) - 의존 관계, is a, has a 본문
예전에 자바를 처음 공부하던 때, 네이버 블로그에 정리한 내용을 이제 티스토리로 옮기고자 한다
※원래 프로그램은 내부에서 연관을 갖고 동작했다.(절차지향적에서) 모듈화를 했다고 해서 그 연관이 사라지는 것이 아니다. 그것을 모듈과의 관계로 표현한다.
◎ 의존관계 (Dependency)
※Association(의존관계) ⊃ has a ⊃ Aggregation ⊃ composition
⊃ use a
- 의존관계의 의미 : 하나의 객체가 일하기 위해 다른 객체에 의존(필요로 하는) 관계
->메소드
메소드, 함수 : 제공하는 기능(println()) <-----call 호출(의존)--- 제공받는 곳
- use a 관계 : 단순 사용관계 -> 메소드 내에서 사용하는 관계 -> local 변수로 사용
- has a(포함) 관계 : 하나의 객체가 다른 객체를 자신의 속성으로 가지고 있는 관계
-> Instance 변수(속성)으로 가지고 있는 단계 (계속적으로 사용하기 위해서!)
-> Whole (전체) --- Part (부품)
Whole(전체) ------ Part (부품)
부엌 ------ 싱크대, 식탁, 냉장고 : 필수( composition )
-- 식기세척기, 냉동고, 토스트기 : 옵션 (Aggregtaion)
※ 싱크대 같은 경우 어떤 상황이냐에 따라 whole or part 가 된다.
-> has a 관계가 Aggregation, Compostion 으로 나뉜다.
◎ Aggregation(집합) 관계
- whole 과 part 객체의 Life Cycle 이 다른 관계
※ 객체 Life Cycle : 객체가 생성되는 new ~ 객체의 소멸 까지
-> whole 객체 생성시 반드시 part 객체가 생성될 필요가 없는 관계
-> 반드시 들어갈 필요는 없으나 들어갈 수 있는 공간은 필수적이다.
ex) 부엌 - 토스트기
◎ Composition 관계
- Whole 과 part 객체의 Life Cycle이 같은 관게
-> whole 객체 생성 시 part 객체도 생성되어 포함되어야 하는 관계
◎ Is a 관계
- 상속(Inheritance) : 코드의 재사용, Class 들의 타입을 통일하기 위해 사용
-> 기존 class 의 내용을 재사용해서 새로운 class 를 만드는것
※ 추상화 (Abstraction) - 공통적인 것을 추출하새 새로운 것을 만드는 것
-> class 들의 공통적인 속성, 동작을 추출해서 상위계층의 class 를 만드는 것
※ 레퍼런스 타입은 비교가 안되지만 상속관계에서는 비교가 가능하다! 객체 내부의 변수다 메소드의 개수에 상관없이 개념적으로 부모 Class가 더 크다! : 부모 Class > 자식 Class (type 비교)
변수 = 값 -> 변수가 더 큰 타입이면 컴파일러가 알아서 변환, 값이 더 큰값이면 강제로 작게 캐스팅 해야함
-> Animal a1 = new Dog() ; 가 가능해짐
◎ 다중상속 , 단일상속
- 다중상속 : 두 개이상의 클래스에서 상속을 동시에 받는 것
- 단일상속 : 두 개이상이 있다면 단 하나만 상속을 받는 것
※ Java : Class 간의 상속은 단일 상속만 지원한다 -> 부모 class 는 하나만 가능
-> interface 를 통해 다중상속 지원
-> 다중 상속의 경우 두개의 부모클래스에서 똑같은 이름의 A()를 지원한다면 누구것을 써야만 할까? 오류가 날 확률이 높아서 자바는 지원하지 않는다.
-> 상속의 구현 : [ 제한자 ] class 이름 [ extends 부모클래스 명 ]
-> 생략시 extends Object가 들어감
ex)
public class Animal{ }
public class Dog extends Animal { }
public class CircusDog extends Dog { }
'개발 > java basic' 카테고리의 다른 글
자바 기본 (17) - 추상, 인터페이스 (0) | 2020.10.08 |
---|---|
자바 기본 (16) - 상속, 다형성 (0) | 2020.10.07 |
자바 기본 (14) - static, 싱글톤 (0) | 2020.10.05 |
자바 기본 (13) - 가변인자, 패키지, import (0) | 2020.10.04 |
자바 기본 (12) - 자바의 메모리 영역, 호출 스택 (0) | 2020.10.03 |