자바에서 다중상속은 인터페이스만 가능합니다. 자바는 클래스를 두 가지 이상 상속하지 못합니다. 그럼 아래 소개될 내용은 인터페이스에 대한 내용이 겠죠. 인터페이스는 일종의 추상클래스이며 클래스처럼 메서드를 가질 수 있지만 기능을 구현할 수 없습니다. 그리고 멤버변수도 가질 수 없으며 상수만 가능합니다.
1. 인터페이스 작성 방법 |
▼ 인터페이스 클래스 작성방식은 아래와 같습니다. 인터페이스에서 포함될수 있는 것들은 상수와 메서드 원형뿐입니다. 그리고 두가지 멤버 변수는 public static final 과 public abstract 이어야 합니다. 보통 생략해서 많이 사용하죠.
interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수목록); } |
// 실제 예제
interface IBird {
public static final int TIGAER = 1;
final int DOG = 3; // public static final int DOG=3;
static int RABIT = 2; // public static final int RABIT=2;
public void eat();
public void travel();
}
2. 클래스 인터페이스 구현하기 |
▼ 자바 클래스는 부모클래스 하나만 상속할수 있습니다. extends 를 이용한 클래스 상속은 하나만 되고 두개 이상은 인터페이스만 됩니다. 인터페이스를 implements 하는 것은 상속이 아니라 구현한다고 해야 합니다. 이렇게 두개 이상의 구현 가능한 인터페이스를 콤마(,) 로 구분해서 추가하시면 됩니다. 아래 소스와 같이 인터페이스에서 구현해야 할 함수는 클래스에서 필히 추가해야 겠죠.
class Animals implements IBird, IFlay {
@Override
public void eat() {
// TODO Auto-generated method stub
}
@Override
public void travel() {
// TODO Auto-generated method stub
}
}
▼ 이외에 상속과 구현을 동시에 할수도 있습니다. extends 키워드를 이용해 클래스 하나와 implements 로 인터페이스를 하나 이상 추가하는 것이죠.
class Animals extends Unit implements IBird {
@Override
public void eat() {
// TODO Auto-generated method stub
}
@Override
public void travel() {
// TODO Auto-generated method stub
}
}
3. 인터페이스 확장하는 방법 |
▼ 인터페이스는 인터페이스를 통해서 확장시킬수 있습니다. 추상화를 통해 좀더 상위 개념이 있다면 인터페이스로 하나 뽑아 내고 하위 인터페이스에서 상속 받으시면 아래와 같은 구조가 됩니다. 상속을 위한 키워드는 extends 가 되겠죠. 만약 클래스가 Hockey 인터페이스를 구현할려면 Sports 에 있는 두개의 함수와 Hockey 에 있는 4개의 함수를 합쳐 총 6개가 되어야 합니다. Football 은 5개 겠죠. 이렇게 상속받은 상위 인터페이스 항목도 전부 합쳐서 구현해야 합니다.
interface Sports {
public void setHomeTeam(String name);
public void setVisitingTeam(String name);
}
interface Football extends Sports {
public void homeTeamScored(int points);
public void visitingTeamScored(int points);
public void endOfQuarter(int quarter);
}
interface Hockey extends Sports {
public void homeGoalScored();
public void visitingGoalScored();
public void endOfPeriod(int period);
public void overtimePeriod(int ot);
}
4. 인터페이스 다중상속 |
▼ 자바 클래스는 하나의 부모 클래스를 상속할수 있지만 인터페이스는 다중 상속이 가능합니다. extends 키워드와 콤마를 이용해서 여러 개 인터페이스를 지정하시면 됩니다.
public interface Animals extends IBird, IFlay {
public void go();
public void run();
}
5. 인터페이스 사용하는 이유 |
▼ 흔히 인터페이스 클래스는 DB 연결에 많이 사용합니다. DB 의 종류는 많습니다. 프로젝트에서 전체 프로그램을 완성해 가는 시점에 MySql 에서 Oracle 로 바뀌었다면 어떻게 해야 할까요? 인터페이스로 구현하지 않았다면 모든 참조 소스는 다 바꿔야 합니다. 하지만 인터페이스를 참조해서 구현했다면 Oracle 연결 클래스만 바꾸면 끝나겠죠. 아래 처럼 소스에서는 IDBConnect.connect() 함수를 사용하겠죠. MySql 에서 Oracle 로 바뀐다면 OracleConn 으로 대체 해주시면 간단하게 해결 되겠죠.
interface IDBConnect {
public void conncet();
public void open();
public void select();
}
class MysqlConn implements IDBConnect {
@Override
public void conncet() {}
@Override
public void open() {}
@Override
public void select() {}
}
class OracleConn implements IDBConnect {
@Override
public void conncet() {}
@Override
public void open() {}
@Override
public void select() {}
}
'자바(JAVA)' 카테고리의 다른 글
자바(Java) AWT – Label 오브젝트 사용법과 예제 (0) | 2022.12.28 |
---|---|
자바 Java 윈도우 위치 찾기 명령어 (1) | 2022.12.25 |
스프링 (Spring Boot) 메이븐 배포시 No Compiler is provided in this environment 에러 (6) | 2022.10.30 |
자바(Java) 문자열 구분을 위한 Split 함수 사용하는 방법 (0) | 2022.10.24 |
자바(Java) 주석 Comments 소스 내에 작성하는 방법 (2) | 2022.08.10 |
자바(Java) 데이터 형변환 char -> String 여러가지 방법 (5) | 2022.07.22 |
자바 객체 지향 프로그램, 객체 생성과 사용 (4) | 2020.09.03 |
자바(Java) 클래스와 함수의 재정의를 방비하는 final 키워드에 대해 알아보자 (0) | 2020.08.16 |