Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- nginx
- Flutter
- 인텔리제이
- SpringBoot
- jsp
- arraylist
- JavaScript
- jpa
- 자바스크립트
- java
- json
- 스프링
- 글로벌
- REACT
- 에러
- 맥길대학교
- gradle
- vue.js
- jQuery
- Keycloak 17.0.1
- ES6
- 알고리즘
- vue
- 현장학습
- keycloak
- spring
- Docker
- lightsail
- aws
- 메서드
Archives
- Today
- Total
korean IT student
[Java-Live-Study] 8주차 - 인터페이스 본문
목표
자바의 인터페이스에 대해 학습하세요.
학습할 것 (필수)
- 인터페이스 정의하는 방법
- 인터페이스 구현하는 방법
- 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법
- 인터페이스 상속
- 인터페이스의 기본 메소드 (Default Method), 자바 8
- 인터페이스의 static 메소드, 자바 8
- 인터페이스의 private 메소드, 자바 9
1. 인터페이스란?
- 인터페이스란 일종의 추상클래스이며, 추상클래스보다 추상화의 정도가 더 높다.
- 추상클래스는 추상메서드 이외에도 구현부가 있는 일반메서드나, 변수를 사용할 수 있는 반면, 인터페이스는 오직 추상메서드와, 상수만을 가질 수 있다.
2. 인터페이스 정의하는 방법
interface hello {
public static final 타입 상수 = 값;
// 추상 메소드
public abstract 메서드(매개변수);
// 디폴트 메소드
defalut 타입 메소드명(매개변수){}
// 정적 메소드
static 타입 메소드명(매개변수){}
}
- 클래스를 정의할 때 class 대신 interface 사용
- 모든 변수는 public static final 이 붙어야하며, 생략 시 컴파일러가 자동으로 추가
- 모든 메서드는 public abstract이 붙어야하며, 생략이 가능하다.
- JAVA 8에서 추가된 메소드로 defalut, static 메소드는 구현부가 있어야한다.
3. 인터페이스 구현하는 방법
public interface Animal {
public void cry();
}
public class Cat implements Animal {
@Override
public void cry() {
System.out.println("야옹");
}
}
public class Dog implements Animal {
@Override
public void cry() {
System.out.println("멍멍");
}
}
- 추상클래스는 클래스를 확장한다는 의미의 extends 키워드를 통해 구현 반면 인터페이스는 implements 키워드 사용
4. 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법
public class Main {
public static void main(String[] args) {
Cat cat = new Cat();
Dog dog = new Dog();
dog.cry(); //출력 : 멍멍
cat.cry(); //출력 : 야옹
}
}
- 위의 코드와 같이 참고하시면 됩니다.
- dog 클래스와 cat 클래스 각각 구현한 내용이 다르므로 출력되는 값도 다르게 표출 됩니다.
5. 인터페이스 상속
public interface Animal{
public abstract void cry();
}
public interface person {
public abstract void man();
}
public class everyone implements Animal,person {
@Override
public void cry() {
System.out.println("동물울음~~~");
}
@Override
public void man() {
System.out.println("남자~~~~");
}
}
- JAVA는 다중상속이 불가하지만, 인터페이스는 다중상속이 가능합니다.
6. 인터페이스의 기본 메소드 (Default Method), 자바 8
public interface DefaultInterface {
void use(); // 추상메서드
public default void using() {
System.out.println("Default Method 실행");
}
}
- 인터페이스는 Method 정의만 할 수 있고 구현은 할 수 없었지만, 이를 보완하기 위해 기본 메소드가 생기면서 구현내용도 포함할 수 있습니다.
7. 인터페이스의 static 메소드, 자바 8
public interface Animal {
public static void cry(){
System.out.println("static Method start");
};
}
public static void main(String[] args) {
Animal.cry(); // 출력 : static Method start
}
- 인터페이스에서 Method 구현이 가능하며, 반드시 클래스명으로 메소드를 호출
- 재정의 불가능
8. 인터페이스의 private 메소드, 자바 9
- private Method를 default Method에서 호출하여 사용할 수 있습니다.
- private Method에 static 키워드를 사용할 경우, static Method에서 호출이 가능합니다.
'back-end > JAVA' 카테고리의 다른 글
[Java-Live-Study] 10주차 - 멀티쓰레드 프로그래밍 (0) | 2021.11.25 |
---|---|
[Java-Live-Study] 9주차 - 예외 처리 (0) | 2021.11.03 |
[Java-Live-Study] 7주차 - 패키지 (0) | 2021.10.26 |
[Java-Live-Study] 6주차 - 상속 (0) | 2021.09.27 |
[Java-Live-Study] 5주차 - 클래스 (0) | 2021.09.17 |
Comments