본문 바로가기
Programming/Java

Java Abstract(추상 클래스), Interface(인터페이스)

by wonduk 2023. 7. 7.
728x90

추상클래스 개념

선언은 있으나 구현되어 있지 않은 메소드로  클래스의 {} 부분에 내용이 없습니다.

사용하는 곳은 주로 가이드,규격을 보여줄 때 사용합니다.

인스턴스를 생성불가능 합니다.

추상클래스가 설계를하고 자식클래스에서 구현하도록 하는 용도입니다.


추상클래스 기본 사용문법

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접근 지정 선언이 불가능하다는 점 입니다.

728x90