[다시시작하는 자바] 5. 추상화(추상클래스, 인터페이스)
1. 추상화 추상화란 여러 객체에 공통적으로 사용되는, 사용되어야 하는 내용을 뽑아내는것을 말한다. 치즈라면과 떡라면, 만두라면이 있다. 물을 끓이고, 스프와 면을 넣는 과정 까지는 모든 라
jwkim96.tistory.com
캡슐들 중에서 공통적으로 나타나는 부분을 분리해서 캡슐로 만들어 놓는 행위를 추상화라 한다
-> 공통분모의 캡슐화
이건 생활코딩
abstract란 한국어로는 추상으로 번역된다.
abstract라는 것이 상속을 강제하는 일종의 규제라고 생각하자.
즉 abstract 클래스나 메소드를 사용하기 위해서는 반드시 상속해서 사용하도록 강제하는 것이 abstract다.
추상 메소드란 메소드의 시그니처만이 정의된 비어있는 메소드를 의미한다.
* 추상화로 만들어진 클래스의 특징
1. 추상 클래스는 뼈대이므로 절대로 실체화 되어서는 안됨 -> new 해서 객체를 생성할 수 없다
2. 추상 클래스는 뼈대이므로 반드시 재정의해야하는 메소드가 있다
Exam 클래스를 상속받는 새로운 YBMExam 클래스가 생겨났다 -> toeic 과목 추가된 클래스
NewExam클래스와 YBMExam클래스의
공통분모 클래스인 Exam에 추상클래스라는 의미인 abstract를 붙여주었다
abstract를 붙여주면 객체화 시킬 수 없다
하지만 반드시 객체화 시키면 안된다는 것은 아니다 -> abstract 안붙이면 됨
그냥 객체화되길 원하지 않는다면 -> abstract 붙여주서 객체화 못하게
-> 그렇다면 언제 쓰는 거지?
YBMExam 클래스에도 필요한 total과 avg 함수 넣어주었다.
자식 클래스 둘 다 고쳐사용하는 함수이므로 부모함수에서는 정의할 필요가 없다
-> 그래서 없애면? -> 메인 함수에서 부모형식을 참조로 한 객체 생성을 한 경우에 avg함수 사용 불가하다
그래서 abstract하고 내용이 없는 함수 제공만 해주었다
-> 자식 클래스에서 꼭 함수를 구체화 해주어야 한다
(안해줄 경우 자식클래스에서 오류)
'뉴렉처 과정 기록 (Backend) > JAVA' 카테고리의 다른 글
04/07 JAVA 인터페이스 (0) | 2021.04.07 |
---|---|
04/06 JAVA 추상화, 인터페이스 (0) | 2021.04.06 |
04/02 JAVA 객체 형식에 따른 함수 호출, 동적바인딩 (0) | 2021.04.02 |
04/01 JAVA 생성자, 오버로드(Overload) / 객체의 참조형식 (0) | 2021.04.01 |
03/31 JAVA 상속(IS A, Override) (0) | 2021.03.31 |