대충벌레 블로그
article thumbnail
728x90
반응형

추상 클래스

  • 추상 메소드를 갖는 클래스
  • 추상 메소드 : 헤더만 정의되고 구현 코드는 정의하지 않은 메소드

 

abstract class Shape {
	int x,y;
	public void move(int x,int y) {
		this.x=x;
		this.y=y;
	}
	public abstract void draw();

}

 class Rectangle extends Shape{

	int width,height;
	@Override
	public void draw() {
		// TODO Auto-generated method stub
		System.out.println("사각형");
		
	}
	
}
 
 class Circle extends Shape{

	@Override
	public void draw() {
		// TODO Auto-generated method stub
		System.out.println("원");
	}
	 
 }

 

  • 추상클래스 Shape 특징

  1. Shape 클래스는 객체생성이 불가능하다.
  2. 추상클래스이여도 반드시 추상 메소드를 갖는것이 아니라 일반 메소드를 가질수있다. [코드의 move 메소드 참조]
  3. 추상메소드를 하나라도 가지면 추상클래스가 된다. 만약 추상메소드를 가지고 있는데 abstract를 class앞에 붙이지 않으면 컴파일 오류가 발생한다. [ 코드의 draw(); 참조]
  4. 서브 클래스 Rectangle에서 Shape를 상속받았으므로 draw메소드를 반드시 재정의 해줘야한다.

인터페이스

  • 인터페이스(interface) : 추상 메소드들로만 이루어진다.
public interface exinterface {
	반환형 추상 메소드();

}

public class 클래스이름 implements exinterface{
	반환형 추상 메소드() {
		
	}
}
  • 인터페이스 안에는 추상 메소드들이 정의된다.
  • 인터페이스를 구현하는 클래스는 추상 메소드의 몸체를 구현하여야 한다.

인터페이스의 예

  1. 전원을 키다,전원을 끄다 기능을 갖는 리모컨 구현
  2. TV를 클래스로 정의하고 TV의 전원 기능을 리모컨으로부터 상속받음.
  3. 냉장고를 클래스로 정의하고 냉장고의 전원 기능을 리모컨으로 부터 상속받음.
public class Tv implements RemoteControl {

	@Override
	public void turnOn() {
		// TODO Auto-generated method stub
		//TV의 전원 켜기 위한 코드
	}

	@Override
	public void turnOff() {
		// TODO Auto-generated method stub
		//TV의 전원을 끄기 위한 코드
	}

	
}
Tv t = new Tv();
t.turnOn();
t.turnOff();

인터페이스 생성

  • Tv클래스에서 전원과 관련된 부분만 리모컨 인터페이스로 사용하는 개념
  • 리모컨 인터페이스에서 생성된 객체는 Tv의 다른 기능을 제어할수 없음.
RemoteControl remote = new Tv();
remote.turnOn();
remote.turnOff();

1.Tv객체이지만 RemoteControl 인터페이스를 구현하기때문에 RemoteControl 타입의 변수로 가리킬수 있다.

2.remote를 통해서 RemoteControl 인터페이스에 정의된 메소드만을 호출할수 있다.

 

다중 상속

  • 클래스는 다중 상속이 제한되지만 인터페이스는 다중상속이 가능하다.
  • 한개의 클래스에 여러개의 인터페이스를 구현할수있다.

관련글

반응형
profile

대충벌레 블로그

@대충벌레

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!