인터페이스
형식)
interface 인터페이스명{
//멤버변수에 상수만 가능
public (static final) int SU=3; //괄호 생략 가능
//추상메소드만 선언 가능
public (abstract) void cal();
}
인터페이스 생성
new > interface > extended interfaces(add)
인터페이스와 추상클래스의 공통점
- 인터페이스를 구현하는 클래스는 인터페이스에서 선언된 추상메소드를 반드시 오버라이딩 해야한다(강제성)
- 객체를 생성할 수 없다
인터페이스와 추상클래스와의 차이점
- 인터페이스는 추상메소드만 작성할 수 있다, 일반메소드는 포함하지 않는다(모두 추상메소드이기 때문에 abstract키워드를 통해 구분해주지 않아도 된다) 하지만 추상클래스는 일반메소드도 포함시킬 수 있다
- 인터페이스는 다중 인터페이스 구현이 가능하지만 추상클래스는 단일상속만 가능하다
추상클래스, 인터페이스를 사용하는 목적
설계목적
: 장비가 다르다고 해서 각각 기능은 같은데 메소드명을 다 다르게 주면 나중에 통합할때
문제가 발생한다 -> 일관성을 부여한다
인터페이스 상속
//자식인터페이스명 extends 부모인터페이스명
public interface AdvanceVolume extends Volume {
/* 부모로부터 물려받은 추상메서드를 이미 가지고 있는 상태
* public void turnOn();
* public void turnOff();
*/
public void volumeUp(int level);
public void volumeDown(int level);
}
자식인터페이스를 구현한 클래스(TV, Radio)
public class TV implements AdvanceVolume {//public class Radio implements AdvanceVolume
private int VolLevel;//볼륨의 크기
@Override
public void turnOn() {
// TODO Auto-generated method stub
System.out.println("TV 음악프로그램을 turn On!");
}
@Override
public void turnOff() {
// TODO Auto-generated method stub
System.out.println("TV 음악프로그램을 turn Off!");
}
@Override
public void volumeUp(int level) {
// TODO Auto-generated method stub
VolLevel+=level;
System.out.println("TV음악프로그램의 볼륨을"+level+"만큼 올림!");
}
@Override
public void volumeDown(int level) {
// TODO Auto-generated method stub
VolLevel-=level;
if(VolLevel < 0)
VolLevel=0;
System.out.println("TV음악프로그램의 볼륨을"+level+"만큼 내림!");
}
}
public class VolTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
TV t=new TV();
Radio ra=new Radio();
/*
* 객체는 다 다르지만 공통으로 사용하는 메서드명에 통일성 부여
* ->내부기능은 다 다르다.
*/
t.turnOn();
ra.turnOn();
t.volumeUp(12);
ra.volumeUp(7);
}
}
/*
TV 음악프로그램을 turn On!
Radio 음악프로그램을 turn On!
TV음악프로그램의 볼륨을12만큼 올림!
Radio 음악프로그램의 볼륨을7만큼 올림!
*/
'JAVA' 카테고리의 다른 글
[JAVA]형변환 기본형변환 객체형변환/ instanceof 연산자 (0) | 2021.02.02 |
---|---|
[JAVA]AWT, Swing, 컨테이너, 컴포넌트, GUI 프로그램 만들기, 배치관리자, 이너클래스, Listener, Adapter (0) | 2021.02.01 |
[JAVA]추상클래스 + 인터페이스/ 도형 면적 구하기 (0) | 2021.01.28 |
[JAVA]String 클래스 ==, equals()/Character 클래스/ wrapper 클래스 (0) | 2021.01.27 |
[JAVA]static/ final/ 추상클래스 추상메소드 (0) | 2021.01.26 |