JAVA를 잡아라!...
JAVA - 8. 추상클래스(abstract class) & 인터페이스(Interface) 본문
#1 추상클래스
▶ 추상클래스가 어떻게 등장했는가?
: 기존에 이미 많은 자식클래스들이 있었는데, 이들의 부모 클래서가 없어서 부모 클래스를 정의하기 위해 탄생
: 더 상위가 없었다고 생각했는데... 나중에 상위를 정의!
▶ 객체를 정의하는데 관심이 없음
: 추상클래스는 객체 생성이 불가능, 실제하지 않는 것으로 객체 생성을 하지 않는 클래스에 붙임
▶ 클래스를 정의하는데 관심이 있음
▶ 추상클래스를 사용하는 이유
1. 객체화를 막기 위함
2. 추상메소드를 사용하기 위함 : 메소드 오버라이딩을 강제!
▶ 추상메소드
1. 얘 좀 오버라이딩 해줄래?
2. 오버라이딩을 "강제"
3. 호출될일이 없으므로 메소드바디{}가 없음!
▶ 추상클래스 선언
abstract class 클래스명 {
abstract 리턴타입 메소드명(자료형 매개변수,...);
// 일반 메소드도 선언 가능
}
#2 인터페이스
▶ 메소드 시그니쳐를 ~~~게 작성하자. 합의해서.
: "인터페이스"화 하여 활용
▶ 특징
1. 클래스가 아님
2. 갖고있는 모든 메소드가 public abstract 추상메소드! (생략돼있음)
3. 메소드 오버라이딩을 강제!
4. 구현할때는 implements 키워드 사용
▶ 인터페이스 선언
interface 인터페이스명 {
public static final 타입 상수명 = 값;
public abstract 리턴타입 메소드이름(매개변수,...);
}
- 인터페이스의 모든 메소드는 public이고, abstract이므로 전부 생략가능
- 마찬가지로 모든 상수는 public, static, final 이므로 전부 생략가능
▶ 인터페이스 구현
class 클래스명 implements 인터페이스명 {
//인터페이스에서 선언한 추상메소드 전부 구현
}
- implements 키워드를 사용해 다른 클래스에 인터페이스를 지정하여 구현시킴
- 지정받은 클래스는 인터페이스가 가지고 있는 모든 추상 메소드를 반드시 재정의!
- 인터페이스도 타입으로 구현된 클래스의 부모 역할을 함
▶ ex)
1. 인터페이스 TVimpl를 작성
---> TV라면 반드시 구현해야하는 메소드 작성
2. 1번의 인터페이스를 구현하는 LgTV/SamsungTV class를 작성
3. main()에서 메소드를 사용하면서 편리함을 느껴보자
'JAVA > JAVA_개념' 카테고리의 다른 글
JAVA - 10. 접근제어자_private (0) | 2023.12.08 |
---|---|
JAVA - 9. 컬렉션 프레임워크_#1_배열리스트(ArrayList) (1) | 2023.12.08 |
JAVA - 7. 상속 (0) | 2023.12.01 |
JAVA - 6. Class (1) | 2023.11.29 |
JAVA - 5. 함수 (1) | 2023.11.27 |