상속성은 객체간의 공통적인 기능을관리하기 위한 기법으로, 코드의
재사용을 통하여 프로그램의 유지보수를 편리하게 한다.
다형성(Override, Overload)은 서로 다른 기능이지만 메서드의 이름을
공통되게 처리함으로서 전체 프로그램의 일관성을 유지하게 한다.
@Ovrride 키워드를 사용하지 않고 메서드를 재정의 하는 과정에서
메서드 이름에 실수가 발생하더라도 에러가 아닌 새로운 메서드의 정의로
인식되므로 의도하지 않은 실행결과를 가져올 수 있다.
@Override 키워드를 사용하더라도 자식 클래스를 구현하는 개발자의 실수로
인하여 부모의 기능을 재정의 하지 않았다면, 다형성의 구현은 이루어지지
않게 된다.
추상화 기법은 특정 클래스를 상속받은 경우, 부모의 특정 메서드들을
무조건 재정의 하도록 강제하는 기법이다.
특정 메서드를 재정의 하도록 강제함으로써, 자식 클래스들을 작성하기 위한
가이드의 역할을 할 수 있다.
즉, 추상화 기법은 Java 클랫를 작성하기 위한 설계도를 소스코드 형태로
제시하는 역할을 한다.
추상 메서드를 정의하기 위해서는 'abstract' 키워드를 사용하여 메서드를
정의한다.
추상 메서드는 자식 클래스가 구현해야 하는 메서드의 가이드라인만
제시하기 위한 목적으로 사용되기 때문에, 선언만 가능하고 구현부가 없다.
//선언만 가능하고, 구현부를 위한 블록이 존재하지 않는다.
public abstract void sayHello();
추상 메서드를 포함한 클래스
추상 메서드를 하나 이상 포함하고 있는 클래스는 반드시 '추상클래스'로
정의되어야 한다.
추상 클래스는 abstract 키워드를 사용하여 정의할 수 있다
public abstract class Hello{
public abstract void sayHello();
}
추상 클래스는 객체를 생성할 수 없고, 반드시 상속을 통해서만 사용될 수 있다.
즉, 추상 클래스는 다른 자식 클래스를 위한 '가이드 라인의 역할을 한다.
완벽한 추상화를 구현하기 위한 Java Class의 한 종류
다중 상속이 가능하기 때문에 용도별로 세분화 하여 필요한 요소만 상속할 수
있다.
추상 클래스
-> 멤버변수, 생성자, 메서드, 추상메서드를 포함할 수 있다.
-> 이 클래스를 상속받은 자식 클래스는 다른 클래스를 상속받을 수 없다
-> 객체의 생성이 불가능하다.
인터페이스
-> 추상메서드만 포함할 수 있다.
-> 인터페이스는 다중 상속이 가능하다.
-> 객체의 생성이 불가능하다.