[JAVA]

추상 클래스 (abstract , interface)

지기음 2023. 1. 21. 16:15

abstract

자손 클래스에서 반드시 재정의해서 사용되기 때문에 조상의 구현이 무의미한 메서드

  • 메서드의 선언부만 남기고 구현부는 세미콜론(;)으로 다체
  • 선언부에 abstract추가
  • 클래스 선언부에도 abstract추가
  • 글래스에 구현부가 없는 메서드가 있으므로 객체를 생성할 수 없음 
  • abstract를 사용함으로써 자손 클래스에서 재정의 강제 

 

인터페티스

최고 수준의 추상화 : 일반 메서드는 모두 abstract 형태

클래스와 다른 점은 인터페이스는 다중 상속이 가능 

 

인터페이스의 필요성 

  • 구현의 강제로 표준화 처리
  • 인터페이스를 통한 간접적인 클래스 사용으로 손쉬운 모듈 교체 지원
  • 사로 상속의 관계가 없는 클래스들에게 인터페이스를 통한 관계 부여로 다형성 확장 
  • 모듈 간 독립적 프로그래밍 가능 ----> 개발 기간 단축

 

default method

메서드 선언부에 default modifier 추가 후게 메서드 구현부 작성

 

필요성

  • 기존 인터페이스 기반으로 동작하는 라이브러리의 인터페이스를 추가해야하는 기능이 발생
  • 기존 방식대로라면 추가되는 메서드를 override 해야함
  • default 메서드는 abstact가 아니므로 반드시 구현해야 할 필요는 없음

 

static method 

  • interface에 선언된 static 메소em
  • 일반 static 메서드와 마찬가지로 별도의 객체가 필요 없음 
  • 구현체 ㅡㄹ래스 없이 바로 인터페이스 이름으로메서드에 접근 가능 

 

 

class C implements A extends B -->에러

class C extends B implements A--->이게 맞음 

 

interface A
interface B 

interface C extends A,B -----> O

----------------------------------------

class A{}
interface B extends A ------>X

'[JAVA]' 카테고리의 다른 글

Polymorphism  (0) 2023.01.21
Inheritance + @  (0) 2023.01.21
Abstraction + @ (추상화와 그 외의 중요한 것들)  (0) 2023.01.17
NullPointerException  (0) 2022.12.22
discord로 IntelliJ하는거 티내는 방법  (0) 2022.12.21