반응형
250x250
Notice
Recent Posts
Recent Comments
Link
이롭게 현명하게
[JAVA] 자바 인터페이스 본문
728x90
반응형
[인터페이스]
인터페이스 : 클래스가 구현해야 할 메소드들이 선언되는 추상형
public interface 인터페이스이름{ ... }
<인터페이스의 구성 요소>
- 상수 : public만 허용, public static final 생략
- 추상 메소드 : public abstract 생략 가능
- default 메소드
- 인터페이스에 코드가 작성된 메소드
- 인터페이스를 구현한느 클래스에 자동상속
- public 접근 지정만 허용, 생략가능
- public 메소드
- 인터페이스 내에 메소드 코드가 작성되어야 한다.
- 인터페이스 내에 있는 다른 메소드에 의해서만 호출 가능
- static 메소드
- public,private 모두 지정 가능. 생략하면 public
<인터페이스 특징>
- 인터페이스의 객체 생성 불가
- 인터페이스 타입의 레퍼런스 변수 선언 가능
- 인터페이스 구현 : 인터페이스를 상속받는 클래스는 인터페이스의 모든 추상 메소드 반드시 구현
- 다른 인터페이스 상속 가능
- 인터페이스의 다중 상속 가능
<인터페이스 구현>
- implements 키워드 사용
- 여러개의 인터페이스 동시 구현 가능
- 인터페이스의 추상 메소드를 모두 구현한 클래스 작성
<인터페이스 상속>
interface MobilePhoneInterface extends PhoneInterface {
void sendSMS(); // 새로운 추상 메소드 추가
void receiveSMS(); // 새로운 추상 메소드 추가
}
<추상 클래스와 인터페이스 비교>
공통점
- 객체를 생성할 수 없고 상속을 위한 슈퍼 클래스로만 사용
- 클래스의 다형성을 실현하기 위한 목적
다른점
목적 | 구성 | |
추상 클래스 | 추상 클래스는 서브 클래스에서 필요로 하는 대부분의 기능을 구현하여 두고 서브 클래스가 상속 받아 활용할 수 있도록 하되, 서브 클래스에서 구현할 수 밖에 없는 기능만을 추상 메소드로 선언하여 서브 클래스에서 구현하도록 하는 목적(다형성) | - 추상 메소드와 일반 메소드 모두 포함 - 상수, 변수 필드 모두 포함 |
인터페이스 | 인터페이스는 객체의 기능을 모두 공개한 표준화 문서와 같은 것으로, 개발자에게 인터페이스를 상속받는 클래스의 목적에 따라 인터페이스의 모든 추상 메소드를 만들도록 하는 목적(다형성) | - 변수 필드(멤버 변수)는 포함하지 않음 - 상수, 추상 메소드, 일반 메소드, default 메소드, static 메소드 모두 포함 - protectected 접근 지성 선언 불가 - 다중 상속 지 |
//InA.java
public interface InA {
public void meA();
}
//InB.java
public interface InB {
//int num; // 에러
public void meB();
}
//InC.java
public interface InC extends InA,InB{// 자식 인터페이스
public void meC();
}
//ClassC.java
public class ClassC implements InC{//인터페이스 상속받은 클래스
@Override
public void meA() {
// TODO Auto-generated method stub
System.out.println("meA()실행");
}
@Override
public void meB() {
// TODO Auto-generated method stub
System.out.println("meB()실행");
}
@Override
public void meC() {
// TODO Auto-generated method stub
System.out.println("meC()실행");
}
}
//Main.java
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
ClassC cc = new ClassC();
cc.meA(); cc.meB(); cc.meC();
System.out.println("---");
InA ia = cc;
ia.meA();
//ia.meB();
//ia.meC();
System.out.println("---");
InB ib = cc;
//ib.meA();
ib.meB();
//ib.meC();
System.out.println("---");
InC ic = cc;
//ib.meA();
//ib.meB();
ic.meC();
System.out.println("---");
}
}
< 실행 결과>
meA()실행
meB()실행
meC()실행
---
meA()실행
---
meB()실행
---
meC()실행
---
잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊
댓글과 좋아요는 큰 힘이 됩니다!
더보기
[ 참고자료 ]
728x90
반응형
'JAVA' 카테고리의 다른 글
[JAVA] 자바 추상 클래스와 추상 메소드 (0) | 2023.05.01 |
---|---|
[JAVA] 자바 타입 변환 (0) | 2023.04.28 |
[JAVA] 자바 클래스 상속 (0) | 2023.04.27 |
[JAVA] 자바 상속 개념 (0) | 2023.04.26 |
[JAVA] 자바 접근 제한자 (0) | 2023.04.25 |
Comments