자바에서 다중상속은 인터페이스만 가능합니다. 자바는 클래스를 두 가지 이상 상속하지 못합니다. 그럼 아래 소개될 내용은 인터페이스에 대한 내용이 겠죠. 인터페이스는 일종의 추상클래스이며 클래스처럼 메서드를 가질 수 있지만 기능을 구현할 수 없습니다. 그리고 멤버변수도 가질 수 없으며 상수만 가능합니다.
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 이클립스를 이용해서 자바 디버깅 하기 (10) | 2024.01.14 |
---|---|
스프링 (Spring Boot) 메이븐 배포시 No Compiler is provided in this environment 에러 (7) | 2024.01.10 |
자바(Java) 세계 시간, 각국 현재 시각 얻어 오는 방법 (0) | 2023.12.19 |
자바 No enclosing instance of type ... is accessible 컴파일 오류 수정 (5) | 2023.12.17 |
자바(Java) 리스트(List,ArrayList) 이용하는 방법 (6) | 2023.11.23 |
자바(Java) public, private, protected, default 접근 제어자 차이점은 (3) | 2023.10.23 |
자바(Java) 개발을 위한 최신 버전 JDK 다운 받기 (1) | 2023.10.12 |
자바(Java) 숫자 나누기로 소수점 이하 출력하기 (0) | 2023.08.22 |