일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ALTER
- concreteclass
- arguments
- 객체형변환
- start()
- abstractclass
- eclipse
- Hashtable
- hashCode
- override
- overload
- 추상클래스
- constantnumber
- string
- class
- Eureka
- MSA
- hamobee
- garbagecollection
- 콘크리트클래스
- run()
- methodArea
- value
- Polymorphism
- 생성자
- fuction
- object
- super
- Vector
- reference
- Today
- Total
뇌운동일지
[JAVA18] 추상 클래스 (Abstract class) VS 인터페이스(Interface) 본문
추상 클래스란?
: 추상 메소드를 포함하고 있는 클래스
추상 메소드 : 선언만 있고 정의가 없는 메소드
선언만 있다 -> 원형이 존재한다
정의가 없다 -> 내용이 없다 ( { }이 존재하지 않는다 )
콘크리트 클래스 : 추상 클래스를 상속받음, 추상 클래스를 반드시 재정의
추상클래스의 객체변수 = new 추상클래스의 생성자(); // X
// heap영역에 메모리를 할당해라. 생성자만큼
정의가 없어서 메모리를 제대로 할당할 수 없음.
-> 이렇게 사용할 수 없다.
콘크리트 클래스의 객체변수 = new 콘크리트 클래스의 생성자(); // O
-> 주로 이렇게 사용
추상클래스의 용도 : 뼈대, 설계도
추상클래스 안에는 일반 메서드도 포함. 추상 클래스가 하나라도 있으면 추상클래스
-------------------------------------------------------------------------------------------------------
인터페이스 interface
: 대면하고 있는, 조작기 라는 뜻
100% 추상메서드로 구성
변수가 있음. 거의 상수
-> 상수와 추상메서드
인터페이스는 상속이라는 말을 쓸 수 없음
상속해줄 것이 없기 때문
-> "적용한다" 라고 함 ( implements )
인터페이스를 적용하여 구현클래스를 만듦
구현클래스에서 추상메서드를 재정의
인터페이스 객체변수 = new 구현클래스 생성자();
-> 주로 사용
복잡한 하위 인스턴스를 보지 않기 위해 상위 객체를 만듦.
간단할수록 조작이 쉽기 때문이다.
하위 member를 call해야 할 경우, 객체형변환을 이용해 호출한다
인터페이스의 용도 : 조작기
인터페이스는 한번 설정하면 쉽게 바꿀 수 없음
기능이 많을 경우, 인터페이스를 사용해서 필수적인 기능만 구현하기
인터페이스는 다중상속 가능 (다중 구현)
-> 두 개 이상의 인터페이스를 받는 경우, 다형성으로 쓰지 않고, 하위 객체를 만들어서 사용
---------------------------------------------------------------------------------------------------------
추상클래스와 인터페이스 활용
-> 공통 클래스를 만든다
'JAVA' 카테고리의 다른 글
[JAVA20] Thread, Wrapper class (0) | 2020.03.24 |
---|---|
[JAVA19] 상수(final), 예외처리(try, catch, finally, throws, throw) (0) | 2020.03.23 |
[JAVA17] 상속 관계에서의 생성자, this, super (0) | 2020.03.20 |
[JAVA16] 객체형변환 (overriding, overloading, 다형성, super) (0) | 2020.03.20 |
[JAVA15] overridding VS overloading (0) | 2020.03.20 |