본문 바로가기

Java

Java- 인터페이스와 추상클래스 비교

추상클래스

  추상클래스는 한개 이상의 추상 메소드를 가지고 있는 클래스로 추상 메소드를 가지고 있어 인스턴스를 생성할 수 없다는 것을 제외하면 일반적인 클래스와 다르지 않다.

 

 추상클래스의 구현

  추상 클래스는 아래의 예와 같이 구현이 가능하다. 추상 클래스와 추상 메소드 앞에 abstract 키워드를 붙여준다.

abstract class AbsClass{
    int i;
    double d;
    //일반적인 메소드를 가질 수 있다
    AbsClass(int i, double d){
        this.i = i;
        this.d = d;
    }
    int sum(int a, int b){
        return a+b;
    }
    void print(String str){
        System.out.println(">>>"+str);
    }

    //여러개의 추상 메소드를 가질 수 있다
    abstract void absClassMethod();
    abstract void absClassMethod2();
}

 

인터페이스와 추상클래스의 비교

  사실 기능적으로만 보면 인터페이스와 추상클래스가 하는 일은 큰 차이가 없어보인다. 그런데 이런식으로 생각하면 될것 같다. 어떠한 추상클래스 A를 상속받는 클래스 B,C가 있다고 하자. 이들은 A의 일부 메소드를 완전히 공유하지만 일부 메소드(A.abMethod)는 차이를 둔다.

  그런데 C에는 B와는 차별화되는 메소드가 구현될 필요가 있어 C에만 따로 인터페이스로 구현을 해주었따. 

interface ForC{
	void onlyC();
}

abstract class A{
    void method1(){
    	//생략
    }
    void method2(){
    	//생략
    }
    
    abstract void abMethod();
}

class B extends A{
    @Override
    public void abMethod(){
    	//생략
    }
}

class C extends A implements ForC{
	@Override
    public void abMethod(){
    	//생략
    }
    @Override
    public void onlyC(){
    	//생략
    }
}

'Java' 카테고리의 다른 글

Java- Object 클래스  (0) 2023.01.02
Java- 예외처리  (0) 2023.01.02
Java- interface  (0) 2022.12.30
Java- Object 클래스  (0) 2022.12.29
Java- 상속  (0) 2022.12.29