본문 바로가기
Lang/Java

[java] 추상화와 인터페이스

by 상똥 2023. 6. 4.

[1. 추상클래스의 이해]

추상 클래스

- 추상 클래스 : 하나 이상의 추상 메소드를 포함하는 클래스

- 다형성을 가지는 메소드의 집합을 정의할 수 있도록 해줌

- 반드시 사용되어야 하는 메소드를 추상 클래스에 추상 메소드로 선언해 놓으면, 이 클래스를 상속받는 모든 클래스에서는 이 추상 메소드를 반드시 재정의해야 함

 

메소드 오버라이딩

- 객체 지향 프로그래밍에서 서브 클래스 또는 자식 클래스가 자신의 슈퍼 클래스들 또는 부모 클래스들 중 하나에 의해 이미 제공된 메소드를 특정한 형태로 구현하는 것

- 예시

class SuperClass {			//슈퍼클래스
    public void sum(int x, int y) {
        int result = x + y;
        System.out.println(result);
    }
}

class SubClass extends SuperClass {	//서브클래스
    public void sum(int x, int y) {	//메소드 재정의
        int result = x + y + x + y;
        System.out.println(result);
    }
}

public class Override {
    public static void main(String[] args) {
        SubClass sub = new SubClass();
        sub.sum(1, 2);
    }
}

 

[2. 인터페이스의 이해]

인터페이스(Interface)란

- 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스

- 추상 클래스에는 생성자, 필드, 일반 메소드도 포함하지만, 인터페이스는 추상 메소드와 상수만을 포함

 

인터페이스 사용의 장점

- 대규모 프로젝트 개발 시 일관되고 정형화된 개발을 위한 표준화가 가능함

- 클래스의 작성과 인터페이스의 구현을 동시에 진행할 수 있으므로 개발 시간 단축 가능

- 클래스와 클래스 간의 관계를 인터페이스로 연결하면 클래스마다 독립적인 프로그래밍 가능

 

인터페이스 사용 시

- 인터페이스명과 파일명은 같아야 함 (파일명:Engine, 인터페이스: Engine)

- 인터페이스와 연결되는 클래스에는 implements 사용 (public class oldengine implements Engine)

- 예시

package Interface_Ex;

public interface Engine {
    public void Start();
    public void Stop();
}

 

package Interface_Ex;

public class oldengine implements Engine{
    public void Start(){
        System.out.println("OldEngine Start");
    }
    public void Stop(){
        System.out.println("OldEngine Stop");
    }
}

 

package Interface_Ex;

public class enginetest {
    public static void main(String[] args) {
        Engine engine = new oldengine();
        engine.Start();
    }
}

'Lang > Java' 카테고리의 다른 글

[spring] IoC 컨테이너  (0) 2023.06.08
[java] 예외처리  (0) 2023.06.04
[java] 객체 지향 프로그래밍  (0) 2023.06.04
[Java] 2차원 리스트 List  (0) 2023.04.06
[Java] 1차원 리스트 List  (0) 2023.04.06