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