-
[Java_Basic]인터페이스와 추상 클래스(윤성우의 열혈 Java 프로그래밍)Java/Basic 2021. 1. 2. 17:40
인터페이스
통신 도구, 수단. 기능을 활용하는 방법
- 구현할 인터페이스를 명시할 때 키워드 implements 를 사용한다
- 한 클래스는 둘 이상의 인터페이스를 동시에 구현할 수 있다.
- 상속과 구현은 동시에 가능하다.
- 사용자에게 쓰기쉽게 포장해 논것 (게임기의 조이스틱,버튼처럼 그 안을 사용자가 알아야 할 필요는 없다)
interface Printable{
public void print(String doc); //추상 메소드 : 몸체가 없다
}
인스턴스 생성 불가
class Printer implements Printable{ //상속 아니고 구현!!
public void print(String doc){
System.out.println(doc);
}
}
인터페이스형 참조변수 선언 가능
Printable prn = new Printer();
prn.print("Hello");
인터페이스 문법 구성과 추상 클래스
기본적으로 인터페이스의 메소드는 public 표시가 없어도 public 선언이 된것으로 처리된다.(인터페이스가 기본적으로 외부에서 접근하기 위해 사용하는 것이기에)
interface Printable{
public static final int PAPER_WIDTH = 70; //상수의 선언이 가능하다
public static final int PAPER_HEIGHT = 120;
}
인터페이스 간 상속
새로운 인터페이스를 만들고 원래 아이를 상속시킨다.
- 두 클래스 사이의 상속은 extends로 명시한다.
- 두 인터페이스 사이의 상속도 extends로 명시한다.
- 인터페이스와 클래스 사이의 구현만 implements로 명시한다.
인터페이스의 디폴트 메소드
자바가 기존 문법을 유지하며 새로운 기능을 확장하며 어쩔수 없이 넣을 수 밖에 없던 문법??
인터페이스 수가 늘어났을 때 추상 메소드를 추가해야 하는 상황에서 인터페이스 상속으로 문제를 해결해야 하는데 인터페이스 수가 너무 많아져 해당 문법이 추가가 되었다.
인터페이스 static 메소드
클래스 내에 정의를 하던 static 메소드
인터페이스 내에도 정의 가능하다
default 메소드에서 static 메소드 호출 가능하다.
인터페이스 instanceof 연산
boolean 연산
Marker Interface
체크하기 위한 인터페이스. 표시.
추상클래스
하나 이상의 추상 메소드를 갖는 클래스
public abstract class House{ //추상클래스 public void methodOne(){ System.out.println("method one"); } public abstract void methodTwo(); //추상메소드 }
인스턴스 생성이 불가능하다.
'Java > Basic' 카테고리의 다른 글
[Java_Basic]자바 가상머신의 메모리 모델(윤성우의 열혈 Java 프로그래밍) (0) 2021.01.05 [Java_Basic]예외처리(윤성우의 열혈 Java 프로그래밍) (0) 2021.01.02 [Java_Basic]클래스의 상속3 : 상속의 목적(윤성우의 열혈 Java 프로그래밍) (0) 2021.01.02 [Java_Basic]클래스의 상속 2 : 오버라이딩(윤성우의 열혈 Java 프로그래밍) (0) 2021.01.02 [Java_Basic]클래스의 상속1 : 상속의 기본(윤성우의 열혈 Java 프로그래밍) (0) 2021.01.02