✔ 인터페이스(interface) 아래 Document 참고
https://www.w3schools.com/java/java_interface.asp
Java Interface
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
인터페이스는 그냥 간단하게 말해서 클래스를 디자인하기 위한 '틀'이라고 생각하면 된다!
🟥용어정리🟥
인터페이스 (Interface)
: 인터페이스는 abstract, final과 함께 대표적인 규제이다!
어떤 객체가 있고 그 객체가 특정한 인터페이스를 사용한다면
그 객체는 반드시 인터페이스의 메소드들을 구현해야 한다!
만약 인터페이스에서 강제하고 있는 메소드를 구현하지 않으면
그 어플리케이션은 컴파일 조차 되지 않는다!
자바 프로그래밍 언어에서 인터페이스란 클래스의 행동(behaviour)을 명시하기 위해 사용되는 추상 타입이다.
인터페이스는 자바에서 클래스의 설계도(blueprint)같은 역할을 한다. 자바 인터페이스는 static 상수와 추상 메소드를 포함하고 있다.
한마디로 인터페이스는 추상을 구체화 하기 위한 메커니즘이라고 생각하면 된다.
An Interface in Java programming language is defined as an abstract type used to specify the behavior of a class. An interface in Java is a blueprint of a class. A Java interface contains static constants and abstract methods. The interface in Java is a mechanism to achieve abstraction.
🟩 interface 의 특징 3가지
1. 하나의 클래스가 여러개의 인터페이스를 구현할 수 있다!
2. 인터페이스도 상속이 된다!
3. 인터페이스의 멤버는 반드시 public 이여야 한다!
** 여기서 주의해야할 점..? **
→ public을 생략하면 접근제어자가 default가 되는 것이 아니라 public이 되는것!
interafce의 멤버는 무조건 public !!!
🟪 abstract VS interface 차이점
🟠 interface(인터페이스)
1) 클래스가 아닌 인스턴스라는 고유한 형태를 가지고 있음. (그래서 정의할때 class 키워드를 붙이지 않음)
2) 구체적인 로직이나 상태를 절대!! 못 가짐. (interface는 반드시 body(본체)가 없는 메소드들만을 가지고 있어야함!)
🟡 abstract(추상클래스)
1) 일반적인 클래스이다! (그래서 정의할때 class 라는 키워드가 있음)
2) 구체적인 로직이나 상태를 가질 수 있음.
(추상클래스 안에 추상메소드가 아닌 일반메소드가 존재할 수 있다는 말!)
(추상클래스 안의 추상메소드일 경우에는 절대 body를 가질 수 없음!..
..말그대로 추상적인 것이라 그 추상클래스를 상속하는 자식클래스에서 body를 만들어서 구체화를 해주어야함!)
아래 예시에 적어 놓은 주석들을 하나하나 읽어보면서
주석처리를 풀어보고 실행시켜보면 이해가 금방 될것이다!
Tip ✔
아래 코드를 모두 복사 혹은 다운로드 → IDE 에 붙여넣기 한 다음,
실행해보고 이리저리 코드를 수정해가면서
에러가 뜨면, 왜 에러가 뜨는지 직접 몸소 체험을 해봐야 경험치가 쌓입니다!
아래 댓글창에 질문 언제든지 해주세요!
(시간되는 대로 답변해드리겠습니다)
// 🟩 interface 의 특징 3가지
// 1. 하나의 클래스가 여러개의 인터페이스를 구현할 수 있다!
interface I1 {
public void x();
}
interface I2 {
public void z();
}
// 하나의 클래스(A) 안에 여러개의 interface(I1, I2)를 구현가능!
// ✔ 클래스 상속과 차이점을 따지자면, 상속받는 클래스(하위클래스)는 하나의 부모클래스에서만 상속받을 수 있다!
class A implements I1, I2{
public void x(){}
public void z(){}
}
// -----------------------------------------------------------------------------------------
// 2. 인터페이스도 상속이 된다!
interface I3 {
public void x();
}
interface I4 extends I3 {
public void z();
}
class B implements I4 {
public void x(){}
public void z(){}
}
// -----------------------------------------------------------------------------------------
// 3. 인터페이스의 멤버는 반드시 public 이여야 한다!
// ** 여기서 주의해야할 점..? **
// -> public을 생략하면 접근제어자가 default가 되는 것이 아니라 public이 되는것!
// interafce의 멤버는 무조건 public!!!
interface I5 {
// private void x(); // 오류발생
}
// -----------------------------------------------------------------------------------------
// 🟩 abstract VS interface 차이점
// 🟠 interface(인터페이스)
// 1) 클래스가 아닌 인스턴스라는 고유한 형태를 가지고 있음. (그래서 정의할때 class 키워드를 붙이지 않음)
// 2) 구체적인 로직이나 상태를 절대!! 못 가짐. (interface는 반드시 body(본체)가 없는 메소드들만을 가지고 있어야함!)
// 🟡 abstract(추상클래스)
// 1) 일반적인 클래스이다! (그래서 정의할때 class 라는 키워드가 있음)
// 2) 구체적인 로직이나 상태를 가질 수 있음.
// (추상클래스 안에 추상메소드가 아닌 일반메소드가 존재할 수 있다는 말!)
// (추상클래스 안의 추상메소드일 경우에는 절대 body를 가질 수 없음!..
// ..말그대로 추상적인 것이라 그 추상클래스를 상속하는 자식클래스에서 body를 만들어서 구체화를 해주어야함!)
↓↓↓↓ 코드 다운로드 ↓↓↓↓
'🖥️프로그래밍 언어 > Java' 카테고리의 다른 글
[JAVA] 자바 추상클래스(Abstract) Part2 (1) | 2022.10.08 |
---|---|
[JAVA] 자바 추상클래스(Abstract) (0) | 2022.10.07 |
[JAVA] 자바 인터페이스(Interface) + 실제사용 Part2 (2) | 2022.10.02 |
[JAVA] 자바 인터페이스(Interface) 정의 + 예시 (4) | 2022.09.30 |
[JAVA] 자바 파이널 final + 예제 (2) | 2022.09.29 |