JAVA를 잡아라!...

JAVA - 8. 추상클래스(abstract class) & 인터페이스(Interface) 본문

JAVA/JAVA_개념

JAVA - 8. 추상클래스(abstract class) & 인터페이스(Interface)

onivv 2023. 12. 6. 16:27

#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