반응형
abstract(추상화)
클래스의 추상적인 디자인을 위해 사용한다.
전체 내용을 정의하는 것이 아니라 부분적으로 추상 선언
추상적인 내용은 사용할 때 구체적으로 기능을 명시(오버라이드)
※abstract 메서드(메서드 자체를 디자인)
메서드의 내용부가 정의 되지 않은 형태로 모델 개념의 메서드
반드시 오버라이딩 되어야 객체 생성 가능
※abstract 클래스(abstract 메서드를 포함)
abstract 메서드를 포함하고 있는 클래스로 다형성 표현으로 사용
객체를 생성할 수 없는 것을 제외하면 일반 클래스와 동일
추상클래스 예제
package exam;
abstract class A { // 추상 클래스
int a;
int b;
abstract public int result(); // 추상 메서드
}
class B extends A {
public int result() { // 오버라이드
return a + b;
}
}
class C extends A {
public int result() { // 오버라이드
return a * b;
}
}
public class Exam {
public static void main(String[] args) {
// A ob1 = new A(); //객체 생성 불가능
B ob2 = new B();
C ob3 = new C();
ob2.a = 10;
ob2.b = 20;
ob3.a = 10;
ob3.b = 20;
A[] obs = new A[] { ob2, ob3 };
for (A tmp : obs) {
System.out.println(tmp.result());
}
}
}
실행결과
추상클래스도 클래스이기 때문에 다중상속 표현은 불가하다.
추상클래스의 타입으로 하위 타입의 객체를 참조하는 것이 가능하다.
따라서 다형성을 표현할 수 있다.
일반 class로 상속관계를 만드는 것 보다 명확하게 추상적인 부분과
구현하는 부분을 분리하여 표현이 가능하다.
추상 클래스는 객체로 생성할 수 없기 때문에 코드의 실수도 줄여줄 수 있다.
반응형
'교육자료 > Java' 카테고리의 다른 글
Java Collection part1 (0) | 2017.06.27 |
---|---|
Java 인터페이스 (interface) (0) | 2017.06.25 |
Java 객체 비교하기 (0) | 2017.06.25 |
Java 클래스 구성 요소(다형성) (0) | 2017.06.25 |
Java 클래스 구성 요소(Overriding) (0) | 2017.06.25 |