'@Override' 키워드를 사용하지 않고, 메서드를 재정의 하는 과정에서 메서드 이름에 실수가 발생하더라도 에러가 아닌 새로운 메서드의 정의로 인식 되므로, 의도하지 않은 실행결과를 가져올 수 있다.
@Override키워드를 사용하더라도 자식 클래스를 구현하는 개발자의 실수로 인하여 부모의 기능을 재정의하지 않았다면 다형성의 구현은 이루어지지 않게 된다.
추상화 기법은 특정 클래스를 상속받은 경우
부모의 클래스의 특정 메서드를 무조건 재정의하도록 강제하는 기법이다.
특정 메서드를 재정의하도록 강제하므로써
자식 클래스들을 작성하기위한 가이드 역할 할 수있다.
즉 추상화 기법은 java클래스를 작성하기 위한
설계도를 소스코드형태로 제시하는 역할을 한다.
추상 메서드를 정의하기 위해서는'adstract' 키워드 사용해서 메서드를 정의한다.
추상 메서드는 자식 클래스가 구현해야하는 메서드의 가이드라인만 제시하기 위한 목적으로 사용되기 때문에, 선언만 가능하고 구현부가 없다.
public adstract void sayHello();
추상메서드를 포함한 클래스
추상메서드를 하나라도 포함하고 있는 클래스는 반드시 '추상 클래스'로 정의되어야 한다.
추상클래스 'adstract' 키워드를 사용하여 정의할 수 있다.
public abstract class Hello{
public adstract void sayHello();
}
추상클래스는 객체를 생성할 수 없고 반드시 상속을 통해서 사용될수 있다.
즉 추상 클래스는 다른 자식 클래스를 위한 '가이드라인'의 역할을 한다.
공통기능과 설계제시를 모두 처리하기
추상클래스는 생성자, 멤버변수, 일반메서드 등을 포함 할 수있다.
즉, 공통기능과 가이드라인를 모두 정의하여 다른 클래스에게 상속된다.
public abstract class Hello{
private String msg;
public Hello(String msg){this.msg =msg;}
public abstract void sayHello();
}
인터페이스는 콤마(,)로 연결하여 여러개를 동시에 상속받을 수 있다.
public class Monster implements Fights, Move{
....
}
필요한 경우 다른 클래스와 동시에 상속받을 수 있다.
public class Monster extends User implements Fights, Move{
....
}