JAVA)추상클래스 , 인터페이스

Daehwan Jung·2022년 9월 27일
1

JAVA

목록 보기
5/15

추상클래스

추상 메서드는 메서드의 본체가 완성되지 않은 미완성 메서드를 말한다. 추상 메서드를 1개 이상 포함하고 있는 클래스는 반드시 추상 클래스로 정의되어야 한다.

추상클래스의 예제


abstract class Shape{
	int x,y;
    //추상 클래스라고 하더라도 추상 메소드가 아닌 보통의 메소드도 가질 수 있다!
    public void translate(int x, int y){  
    	this.x=x; 
        this.y=y;
    }
    //추상 메소드를 선언
    public abstract void draw();
};

class Rectangle extends Shape{
	int width,height;
    //자식 클래스 Rectangle에서 부코 클래스의 추상메소드 draw()를 직접 구현한다.
    public void draw(){	
    	System.out.println("사각형 그리기 메소드");}
  	};


class Circle extends Shape{
	int radius;
    //자식 클래스 Rectangle에서 부코 클래스의 추상메소드 draw()를 직접 구현한다.
    public void draw(){	
    	System.out.println("삼각형 그리기 메소드");}
  	};

추상클래스의 용도

Interface의 이해

인터페이스는 내부의 모든 필드가 public static final로 정의되고, static과 default 메서드 이외의 모든 메서드는 public abstract로 정의된 객체지향 프로그래밍 요소다. class 대신 interface 키워드를 사용하여 선언한다.

interface의 구조

interface 인터페이스명{
	public static final 자료형 필드명 =;
    public abstract 리턴 타입 메서드명 ();
}

예시

interface A
	public static final int a = 3;
    public abstract void abc();
}

interface의 예제

//인터페이스의 정의
//메소드의 몸체를 갖지 않는다 따라서 인스턴스 생성 불가하고 참조변수 선언은 가능하다.
interface Printable{
	public void print(String doc);
}


//인터페이스를 구현하는 클래스
//구현하는 메소드와 추상 메소드 사이에도 메소드 오버라이딩 관계 성립
class Printer implements Printable{
	public void print(String doc){
    	System.out.println(doc);
    }
}

추상클래스 vs Interface

  • 추상 클래스 사용 권장
    • 만약 관련된 클래스들 사이에서 코드를 공유하고 싶다면 추상 클래스를 사용하는 것이 좋다.
    • 공통적인 필드나 메소드의 수가 많은 경우, 또는 public 이외의 접근 지정자를 사용해야 하는 경우에 추상 클래스를 사용한다.
    • 정적이 아닌 필드나 상수가 아닌 필드를 선언하기를 원할 때 사용한다.
  • 인터페이스 사용 권장
    • 관련 없는 클래스들이 동일한 동작을 구현하기를 원할 때 사용한다. 예를 들어서 Comparable과 Cloneable과 같은 인터페이스는 관련없는 클래스들이 구현한다.
    • 특정한 자료형의 동작을 지정하고 싶지만 누가 구현하든지 신경쓸 필요가 없을 때 사용한다.
    • 다중 상속이 필요할 때 사용한다.

0개의 댓글