본문 바로가기

Archived(CSE Programming)/Java

Java 추상클래스, 인터페이스

1. 추상클래스

자바의 추상클래스란 그 내용을 구체적으로 명시하지 않은 클래스를 뜻한다.

특정 메소드를 정의하지 않고 추상클래스를 상속하는 하위 클래스에서 이를 정의하도록 한다.

 

사용하는 이유는 간단하다. 클래스들에서 공통된 변수와 공통된 메소드를 필요로 한 상황에서 메소드는 구체적으로 내용이 다르게 정의되어야 할 경우 사용한다.

1) 필드와 메소드의 통일된 규격이 필요하고 이 규격 내에서 구체적으로 구현해야 하는 경우에 사용한다.

2) 실체 클래스 개발을 효율적으로 해야할 때 사용한다.

// 추상클래스
public abstract class abclass{
	// 공통 변수
    int v1;
    int v2;
    
    // 추상메소드
    public abstract void method1();
}

// 실체클래스
class realClass extends abclass{
	@Override
    public void method1(){
    	System.out.println("추상메소드 구현완료");
    }
}

2. 인터페이스

인터페이스는 객체에 대한 사용 설명서를 정의한 것이다. 개발자가 구현하는 중에 객체와 소통할 수 있게 해주는 수단(접점)이라고 표현할 수 있다. 

 

인터페이스 역시 자바의 대표적인 규제 방식인데 서로 관련이 없는 클래스들에서 특정 메소드를 구현할 것을 규제할 때 사용한다. 또한 특정 객체와 메소드를 소통할 때 특정 객체들을 하나로 묶어서 지칭할 수 있다. 이는 굉장한 장점으로 발휘될 수 있다. 

참고 : https://wikidocs.net/217

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

// 인터페이스
public interface Predator {
    public String getFood();
}

// 인터페이스를 구현하는 클래스들
public class Tiger extends Animal implements Predator {
    public String getFood() {
        return "apple";
    }
}
public class Lion extends Animal implements Predator {
    public String getFood() {
        return "banana";
    }
}

// 주키퍼 클래스에서는 인터페이스 Predator를 통해 지칭가능
public class ZooKeeper {    
    public void feed(Predator predator) {
        System.out.println("feed "+predator.getFood());
    }
}

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

  • 클래스와 인터페이스: 클래스는 다중 상속이 불가능하고 인터페이스는 다중 구현 및 상속이 가능하다.
  • 생성자의 유무: 추상 클래스는 생성자를 선언할 수 있고(생성자를 직접 호출하여 객체를 생성할 수는 없다. super() 메소드 이용), 인터페이스는 생성자를 선언할 수 없다.
  • 추상 클래스는 클래스의 특징을 전부 가진다(생성자) / 인터페이스는 상수와 추상 메소드
  • 추상 클래스는 기초 클래스로 활용되고 인터페이스는 하위 클래스에서 특정 기능을 강요할 때 사용한다.
  • 둘 다 다형성을 구현하는 기술이다, 자료형으로 선언 가능, 객체 생성이 불가능

출처: https://yolojeb.tistory.com/20 [개발 일기]

https://marobiana.tistory.com/58

 

'Archived(CSE Programming) > Java' 카테고리의 다른 글

Java 예외처리  (0) 2019.11.03
Java 컬렉션(Collection)  (0) 2019.11.03
Java 오버로딩과 오버라이딩  (0) 2019.11.02
Java 멤버 변수, 접근제어자  (0) 2019.11.02
Java 언어의 특징  (0) 2019.11.02