| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- spring unit test
- steam game score
- tomcat튜닝
- dialtimeout
- 존폴반지
- 존폴결혼예물
- LLM기반CBF
- 분산파일시스템
- 비개인화추천모델
- Akamai 연구결과
- 존폴결혼반지
- jqxWidget워터마크
- 스프링단위테스트방법
- 추천시스템steam
- jsp permission denied
- jsp 예외 permission
- staem algorithm
- cookie refreshToke
- 존폴쥬얼리
- 동시 요청 처리
- 자바스크립트 깨질 때
- set-cookie 안만들어짐
- 외부 톰캣 특수문자 깨질 때
- integrationtest
- jqx워터마크제거
- LLM기반 콘텐츠 추천
- 스팀 게임 스코어 알고리즘
- 분산파일
- 한글 특수문자 자바스크립트
- dial timeout
- Today
- Total
hola 개발
[ Java ] 추상클래스는 왜 필요한걸까? (추상클래스 그리고 인터페이스) 본문
부모 클래스는 제공하지만, 실제 생성되면 안되는 클래스를 추상 클래스라고 한다.
추상 클래스는 이름 그대로 추상적인 개념을 제공하는 클래스이다. 따라서 실체인 인스턴스가 존재하지 않는다. 대신에 상속을 목적으로 사용되고! 부모 클래스 역할을 담당한다
-> 부모 클래스 역할을 담당이 필요한 이유는 다형적 참조와 메소드 오버라이딩을 활용하기 위해서이다.
즉, 추상클래스는 상속을 활용하기 위함이다.
추상 메서드
부모 클래스를 상속 받는 자식 클래스가 반드시 오버라이딩 해야 하는 메서드를 부모 클래스에 정의할 수 있다. 이것을 추상 메서드라 한다. 추상 메서드는 이름 그대로 추상적인 개념을 제공하는 메서드이다. 따라서 실체가 존재하지 않고, 메서드 바디가 없다.
- 메서드에 abstract 키워드를 붙여야 한다.
- 추상 메서드가 하나라도 있으면 클래스는 추상 클래스로 선언해야 한다.
- 추상 메서드는 상속 받는 자식 클래스가 반드시 오버라이딩 해서 사용해야 한다.
그러면 자식 클래스에서 인스턴스를 생성하면??
상속 받은 자식 클래스에서 인스턴스를 생성하면 부모클래스의 인스턴스도 함께 생성된다.
추상 클래스는 인스턴스를 만들 수 없다. 그런데 추상 클래스를 상속 받은 자식 클래스일 경우는 어떻게 될까?
추상 클래스는 구체화 되지 않은 상태이기에 인스턴스화를 할 수 없다. 그러나 상속을 받은 자식 클래스는 구체화된 상태이므로 인스턴화가 가능하고, 이 과정에서 추상 클래스의 속성이나 메소드 등이 사용될 수 있다. 즉, 추상클래스의 인스턴스가 직접 생성되는 것이 아니라 자식 클래스가 추상 클래스의 구조와 메소드를 구현하였기에, 자식 클래스에서 구현된 특성을 바탕으로 인스턴스가 생성된다는 것이다.
모든 메서드가 추상 메서드일 경우라면 ?
이런 클래스를 순수 추상 클래스라고 한다. 기능은 하나도 구현되어 있지 않음.
이러한 수순 추상 클래스는 실행 로직을 전혀 가지고 있지 안하. 단지 다형성을 위한 부모 타입일 뿐
순수 다형성은 다음과 같은 특징이 있다.
- 인스턴스 생성할 수 없다.
- 상속시 자식은 모든 메서드를 오버라이딩 해야한다.
- 주로 다형성을 위해 사용된다.
자바에서는 이러한 추상클래스 역할을 하는 인터페이스가 존재한다.
'자바' 카테고리의 다른 글
| [ Java ] String은 기본타입과는 달라요~ (0) | 2024.10.24 |
|---|---|
| [ Java ] 불변객체는 왜 필요한걸까? ver2 (0) | 2024.10.24 |
| [ Java ] 불변객체는 왜 필요할까? (1) | 2024.10.24 |
| [ Java ] Java는 왜 callbyValue만 되는걸까? (1) | 2024.10.24 |
| [ Java ] socket을 이용한 실시간 채팅 프로그램을 만들어보자 (ver1) (0) | 2024.10.22 |