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

1. 추상 클래스

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

 

<java />
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메소드를 반드시 재정의 해줘야한다.

2. 인터페이스

  • 인터페이스(interface) : 추상 메소드들로만 이루어진다.
<java />
public interface exinterface { 반환형 추상 메소드(); } public class 클래스이름 implements exinterface{ 반환형 추상 메소드() { } }
  • 인터페이스 안에는 추상 메소드들이 정의된다.
  • 인터페이스를 구현하는 클래스는 추상 메소드의 몸체를 구현하여야 한다.

3. 인터페이스의 예

  1. 전원을 키다,전원을 끄다 기능을 갖는 리모컨 구현
  2. TV를 클래스로 정의하고 TV의 전원 기능을 리모컨으로부터 상속받음.
  3. 냉장고를 클래스로 정의하고 냉장고의 전원 기능을 리모컨으로 부터 상속받음.
<java />
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의 전원을 끄기 위한 코드 } }
<java />
Tv t = new Tv(); t.turnOn(); t.turnOff();

4. 인터페이스 생성

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

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

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

 

5. 다중 상속

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

5.1. 관련글

반응형
profile

대충벌레 블로그

@대충벌레

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