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 |
Tags
- spring
- 자바
- 인터페이스
- mysql
- 트랜잭션
- 영속성 컨텍스트
- springboot
- merge
- list
- DI
- 깃허브
- java
- 객체
- github
- 리액트
- react
- 스프링 컨테이너
- 의존성주입
- 상속
- 이클립스
- @transactional
- Spring 개발환경 설정
- 빈
- JVM
- Spring legacy Project
- @Bean
- 자동주입
- 어노테이션
- 스프링
- pom.xml
Archives
- Today
- Total
DEVLOG
인터페이스(Interface) 본문
인터페이스란?
추상클래스 개념과 흡사하나 설계의 본질에 더욱 가까운 구현 방법
자바에서 다중 상속을 구현하게 해주는 고급 기술
추상클래스는 추상 메소드 외에 멤버 변수나 일반 메소드를 가질 수 있지만, 인터페이스에서는 반드시 사전에 정의된 추상 메소드의 상수만을 가질 수 있음
[추상클래스 VS 인터페이스]
인터페이스 예제
Dog.java
- 인터페이스
// 인터페이스
public interface Dog {
// 추상메소드 선언
abstract void crying();
// 일반메소드 구현 안되므로, 어떠한 메소드가 존재하는 지만 알려주는 설계 역할만 함
public void show();
}
Main.java
- Dog.java를 interface
- 상속과 마찬가지로 Add unimplemented methods(오버라이딩)로 반드시 메소드 구현
// implements : 인터페이스 / extends : 상속
public class Main implements Dog{
public static void main(String[] args) {
// 메인메소드의 인스턴스화
Main main = new Main();
main.crying();
main.show();
}
@Override
public void crying() {
System.out.println("월월");
}
@Override
public void show() {
System.out.println("Hello World!");
}
}
[다중상속] 1. 추상클래스 : 다중상속 불가능
Dog.java
- 추상클래스
// 추상클래스
abstract class Dog {
// 추상메소드 선언
abstract void crying();
}
Cat.java
- 추상클래스
// 추상클래스
abstract class Cat {
// 추상메소드 선언
abstract void crying();
}
2. 인터페이스 : 다중상속 가능
Dog.java
// 인터페이스
public interface Dog {
// 추상메소드 선언
abstract void crying();
// 일반메소드 선언
public void one();
}
Cat.java
// 인터페이스
public interface Cat {
// 추상메소드 선언
abstract void crying();
// 일반메소드 선언
public void two();
}
Main.java
public class Main implements Dog, Cat { // 인터페이스는 다중상속 가능
public static void main(String[] args) {
// 메인메소드의 인스턴스화
Main main = new Main();
main.crying();
main.one();
main.two();
}
// 인터페이스든 추상클래스든 선언된 메소드는 반드시 구현해야 함
@Override
public void crying() {
System.out.println("월월");
}
@Override
public void two() {
System.out.println("Two!");
}
@Override
public void one() {
System.out.println("One!");
}
}
'Java' 카테고리의 다른 글
객체(Object) (0) | 2022.05.23 |
---|---|
다형성(Polymorphism) (0) | 2022.05.23 |
Final 키워드 (0) | 2022.05.21 |
추상 (Abstract) (0) | 2022.05.21 |
객체지향 프로그래밍 - 6. 상속(2) (0) | 2022.05.21 |
Comments