추상화

9mond·2023년 7월 11일
0
post-thumbnail
post-custom-banner

1. 상속성과 다형성의 필요성

  • 상속성은 객체 간의 공통적인 기능을 관리하기 위한 기법으로, 코드의 재사용을 통하여 프로그램의 유지보수를 편리하게 한다.
  • 다형성(Override, Overload)은 서로 다른 기능이지만 메서드의 이름을 공통되게 처리함으로서 전체 프로그램의 일관성을 유지하게 한다.

2. Override 처리의 문제 발생 가능성

  • @Override 키워드를 사용하지 않고 메서드를 재정의 하는 과정에서 메서드 이름에 실수가 발생하더라도 에러가 아닌 새로운 메서드의 정의로 인식되므로 의도하지 않는 실행결과를 가져올 수 있다.
  • @Override 키워드를 사용하더라도 자식 클래스를 구현하는 개발자의 실수로 인하여 부모의 기능을 재정의 하지 않았다면, 다형성의 구현은 이루어지지 않게 된다.

3. 상속 처리 시, Override 강제하기

  • 추상화 기법은 특정 클래스를 상속받은 경우, 부모의 특정 메서드들을 무조건 재정의하도록 강제하는 기법이다.
  • 특정 메서드를 재정의하도록 강제함으로써, 자식 클래스들을 작성하기 위한 가이드의 역할을 할 수 있다.
  • 즉, 추상화 기법은 Java 클래스를 작성하기 위한 설계도를 소스코드 형태로 제시하는 역할을 한다.

4. 추상 메서드 만들기

  • 추상 메서드를 정의하기 위해서는 abstract 키워드를 사용하여 메서드를 정의한다.
  • 추상 메서드는 자식 클래스가 구현해야 하는 메서드의 가이드라인만 제시하기 위한 목적으로 사용되기 때문에, 선언만 가능하고 구현부가 없다.
	// 선언만 가능하고, 구현부를 위한 블록이 존재하지 않는다.
	public abstract void sayHello();

5. 추상 클래스

  • 추상 메서드를 포함한 클래스
  • 추상 메서드를 하나 이상 포함하고 있는 클래스는 반드시 추상 클래스로 정의되어야 한다.
  • 추상 클래스는 abstract 키워드를 사용하여 정의할 수 있다.
	public abstract class Hello{

		public abstract void sayHello();
	}
  • 추상 클래스는 객체를 생성할 수 없고, 반드시 상속을 통해서만 사용될 수 있다. 즉, 추상 클래스는 다른 자식 클래스를 위한 가이드라인의 역할만을 한다.

6. 공통 기능과 설계 제시를 모두 처리하기

  • 추상 클래스는 생성자, 멤버변수, 일반 메서드 등을 포함할 수 있다.
  • 즉, 공통 기능가이드라인을 모두 정의하여 다른 클래스에게 상속된다.
	 // 추상 클래스를 상속받는 과정은 일반 클래스의 상속과 동일하게 extends 키워드를 사용한다.
	public class Korean extends Hello {
    
	 // 만약, 상속받은 클래스에 생성자가 존재한다면 부모 생성자의 강제 호출에 대한 처리를 요구하는 의미로 에러가 표시된다.
	public Korean(String msg) {
		super(msg);}
	
	 //추상 메서드를 상속받고 에러를 해결하는 과정에서 부모가 정의하고 있는 메서드들을 재정의하게 된다.
	 //추상 클래스는 이와 같이 자식 클래스가 정의해야 하는 규격을 강제하기 위해 사용한다.
	@Override
	public void sayHello() {
	}
}
profile
개발자
post-custom-banner

0개의 댓글