추상 클래스는 추상적으로 정의한 클래스이다. 객체를 만들지 못한다. 추상 클래스를 이용하여 사용자가 재정의를 통해 상황에 맞게 메소드를 이용할 수 있다.
package com.AbstractPackage;
abstract public class Abstract {
public int num = 1;
public void show() {
System.out.println("Abstract의 함수");
}
abstract void plus(); //가상함수
}
package com.AbstractPackage;
public class Normal1 extends Abstract {
//함수 오버라이딩
public void show() {
System.out.println("Normal1의 함수");
}
//추상클래스에서 함수를 가져와 구체화 함
public void plus() {
num = num + 10;
System.out.println("Normal은 10을 더한다" + num);
}
package com.AbstractPackage;
public class Normal2 extends Abstract{
public void plus() {
num = num * 2;
System.out.println("Normal2는 2를 곱합니다." + num);
}
}
package com.AbstractPackage;
public class Main {
public static void main(String[] args) {
Normal1 norm1 = new Normal1();
Normal2 norm2 = new Normal2();
norm1.show(); //구현된 멤버함수
norm1.plus(); //오버라이드된 멤버함수
System.out.println();
norm2.show(); //구현된 멤버함수
norm2.plus(); //일반 멤버함수
}
}
추상클래스의 상속과 일반 상속에는 차이가 있다. 부모 클래스의 메소드를 자식 클래스에서 변경할 일이 없다면 일반클래스를 이용하여 상속하고 자식클래스에서 꼭 재정의를 해야 하는 부분이 있다면 추상클래스를 이용하여 상속한다.
'자바' 카테고리의 다른 글
16. 핸드폰 예제로 알아보는 인터페이스 (0) | 2019.07.29 |
---|---|
15. 인터페이스 (0) | 2019.07.29 |
13. 상속2 (0) | 2019.07.21 |
12. 상속1 (0) | 2019.07.20 |
11. static (0) | 2019.07.19 |