추상클래스 개념
선언은 있으나 구현되어 있지 않은 메소드로 클래스의 {} 부분에 내용이 없습니다.
사용하는 곳은 주로 가이드,규격을 보여줄 때 사용합니다.
인스턴스를 생성불가능 합니다.
추상클래스가 설계를하고 자식클래스에서 구현하도록 하는 용도입니다.
추상클래스 기본 사용문법
public abstract class MouseAbstract {
void MouseMove() {}
void Left() {}
void right() {}
void middle() {}
void connectionType() {}
}
abstract를 클래스앞에 적어서 선언합니다.
구현부분에서의 문법은 다음과 같습니다.
class 자식클래스 extends 부모클래스
public class WheelMouseAbstract extends MouseAbstract{
@Override
public void MouseMove() {
// TODO Auto-generated method stub
System.out.println("레이저이동");
}
@Override
public void Left() {
// TODO Auto-generated method stub
System.out.println("왼쪽클릭");
}
@Override
public void middle() {
// TODO Auto-generated method stub
System.out.println("스크롤 휠");
}
@Override
public void right() {
// TODO Auto-generated method stub
System.out.println("오른쪽클릭"); }
@Override
public void connectionType() {
// TODO Auto-generated method stub
System.out.println("무선연결"); }
}
클래스를 작성한 후 메인클래스에서 abstract로 구현한 자식 클래스를 사용하는 방법은 다음과 같습니다.
클래스명.변수명 <<으로 호출해주시면 됩니다.
public class CreateMouseAbstract1{
public static void main(String[] args) {
System.out.println("휠 마우스 구성");
WheelMouseAbstract wm = new WheelMouseAbstract();
wm.connectionType();
wm.Left();
wm.middle();
wm.right();
wm.MouseMove();
}
}
인터페이스 개념
인터페이스란?
한국어로 번역하면 연결,접점이라는 뜻을 가지고 있으며 인터페이스를 통해서 서로 왔다갔다 한다는 뜻입니다.
자식클래스에게 더 자유도를 많이 줄 수 있는 특징이 있습니다.
추상클래스와 매우 유사한 특징을 가지고 있습니다. 하지만 추상클래스를 넘어서 아무것도 안 가지고 있는 클래스 입니다.
변수는 사용이 불가능하며 상수만 사용이 가능합니다(final)
Java8부터 defalut, private, static메서드사용이 가능해졌습니다.
기본값은 public으로 지정되어 있습니다.
public abstract void 변수명();
으로 작성이 가능하지만 public과 abstract는 기본값으로 적용이 되기 때문에 생략이 가능합니다.
인터페이스의 가장 큰 특징으로는 다중상속이 가능하다는 점 입니다.
인터페이스를 설계할 때에는 요소들의 제일 많은 공통점을 interface로 구현을 해주고 그다음 자식 클래스에서
각특성이 조금 들어간 공통점을 작성해준 후 구현을 해주는 방식으로 사용 할 수 있습니다.
기본 작성방식은 다음과 같습니다.
public interface interfacename {
void name1;
static name2;
private name3;
}
자식 클래스에서 상속받을 떄는 다음과 같습니다.
implements를 이용하여 상속받는데
상속받은 클래스는 부모의 클래스요소를 모두 다 사용한 후 추가로 원하는 메서드를 추가할 수 있습니다.
class 클래스명 implements 인터페이스명{
}
또한 인터페이스는 다중상속이 되기때문에 추상클래스와 인터페이스 여러개를 상속받을 수 있습니다.
class 클래스명 extends 클래스명(부모클래스) implements 인터페이스명1, 인터페이스명2
추상클래스와 인터페이스 비교
비슷한점으로는 객체를 생성할 수 없고 상속을 위한 슈퍼 클래스로만 사용된다는 점입니다.
다른점으로는 인터페이스에서는 변수가 없고, 다중상속을 지원하고 protected접근 지정 선언이 불가능하다는 점 입니다.
'Programming > Java' 카테고리의 다른 글
| Java JPanel 이용한 막대차트, 꺾은선그래프, 파이차트 만들기 (0) | 2023.07.13 |
|---|---|
| Java StringTokenizer (0) | 2023.07.07 |
| Java 스트링버퍼(StringBuffer) (0) | 2023.07.07 |
| Java 상속의 개념, 상속을 이용한 예제 (0) | 2023.07.06 |
| Java 생성자 목적,특징, 사용법 (0) | 2023.07.05 |