추상화
추상화라는것은, 어떤 실체로부터 공통적인 부분이나 관심 있는 특성들만 한곳에 모은것을 의미한다. 예를들어서, 지구를 본따 만든 지구본을 예로 들 수 있다. 지구본은 실제 지구로 부터 관심 있는 특성들(대륙의 위치, 위도,경도)만 뽑아서 만든것이다. 지구를 추상화해서 지구본을 만들었다.
객체지향에서의 추상화는 어떤 하위클래스들에 존재하는 공통적인 메소드를 인터페이스로 정의하는것을 예로 들 수 있다.
- 자료의 추상화 = 객체지향 관점에서 클래스를 정의하는 것
- 추상클래스 = 여러 클래스간 비슷한 필드와 메서드를 공통적으로 추출해 만들어진 클래스
- 인터페이스 = 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것
다형성
다형성은, 같은 모양의 함수가 상황에 따라 다르게 동작 하는것을 의미한다.
- 오버라이딩(Overriding): 부모클래스의 메서드와 같은 이름, 매개변수를 재정의 하는 것
- 오버로딩(Overloading): 같은 이름의 함수를 여러개 정의하고, 매개변수의 타입과 개수를 다르게 하여 매개 변수에 따라 다르게 호출할 수 있게 하는 것
부모클레스에서 물려받은 가상 함수를 자식 클래스 내에서 오버라이딩 되어 사용되는 것
- 간단히 예를 들자면
군대에서 나는 K2 소총을 잡았고 동기는 K1 소총을 잡았다. 사격 훈련이 있을 때 중대장이 '준비된 사수부터 발사!'라고 외치면
나와 내친구는 명령을 받고 앞의 사로를 향해 총을 쏜다. 이때 중대장은 추상적 객체를 상속받은 모든 객체들에게 명령을 내린것이고
그 병사가 총이 뭐든간에 그냥 발사를 하라는 명령을 한것이다.
즉, 다형성이 없다면 K1 소총을 든 병사 발사, K2 소총을 든 병사 발사 라며 명령을 하나하나 내려야 할 것이다
출처 :https://dis.dankook.ac.kr/lectures/java18-2/2018/09/18/abstract-class-vs-interface/
출처: https://88240.tistory.com/228 [shaking blog]
출처: https://simsimjae.tistory.com/293 [104%]
출처: https://sdesigner.tistory.com/90
[Java] 추상화, 상속, 추상클래스와 인터페이스 비교, 다형성
본 포스팅은 jisikTank 스터디에 참여하며 정리한 문서입니다. jisikTank Skill 지식 Git Repository 객체지향과 추상화(상속, 추상클래스, 인터페이스, 다형성) 추상화(Abstraction) 객체 지향 프로그래밍 키워
sdesigner.tistory.com
'IT Diary > # JAVA' 카테고리의 다른 글
java stream (0) | 2021.08.11 |
---|---|
Ioc 와 di (0) | 2021.08.10 |
[ JAVA ] 캡슐화란? (0) | 2021.07.11 |
[ JAVA ] try catch 문 (0) | 2021.07.09 |
[ JAVA ] this 와 this() (0) | 2021.03.14 |