추상화(abstration) 와 상속(inheritance)

김현수·2023년 10월 17일

추상화

사물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추출하여 파악하는 것

객체 지향 프로그래밍에서의 추상화

객체의 공통적인 속성과 기능을 추출하여 정의하는 것

하위 클래스 : 자동차, 오토바이
상위 클래스 : 이동수단
공통적인 속성과 기능 추출

public interface Vehicle {
	public abstract void start();
    void moveForward(); // public abstract 키워드는 생략 가능
    void moveBackward();
}

인터페이스

서로 다른 두 시스템, 장치, 소프트웨어 따위를 서로 이어주는 부분 또는 그런 접속 장치

인터페이스는 어떤 객체의 역할만 정의하여 객체들관의 관계를 연결하는 것

인터페이스에는 추상 메서드나 상수를 통해 어떤 객체가 수행해야 하는 핵심적인 역할만을 규정하고 실제 구현은 해당 인터페이스를 구현하는 각각의 객체들에서 하도록 프로그램을 설계하는 것

public class Car implements Vehicle{ //이동수단을 구체화한 자동차 클래스
	@Override
    public void moveForward() {
    	System.out.println("자동차가 앞으로 전진합니다");
    }
    
    @Override
    public void moveBackware() {
		System.out.println("자동차가 뒤로 후진합니다");
    }
}

public class MotorBike implements Vehicle{ //이동수단을 구체화한 오토바이 클래스
	@Override
    public void moveForward() {
    	System.out.println("오토바이가 앞으로 전진합니다");
    }
    
    @Override
    public void moveBackware() {
		System.out.println("오토바이가 뒤로 후진합니다");
    }
}

다음과 같이 interface에서 정의한 역할을 각각의 클래스에 맞게 구현

상속

기존의 클래스를 재활용하여 새로운 클래스를 작성하는 자바의 문법 요소

상위 클래스의 기능과 속성들을 그대로 사용할 수도 있지만, 각각의 클래스에 맞게 메서드 오버라이딩을 사용해 내용 재정의 가능

0개의 댓글