728x90
추상 클래스는 부모클래스 전용으로, 메소드 구조만 잡아주고 자식 클래스에서 각자 정의해서 쓰도록 하는 클래스의 종류입니다. 즉 추상 클래스를 상속받은 자식 클래스는, 추상 클래스에서 정의한 추상 메소드를 무조건 오버라이딩해서 완성시켜야 합니다. 다른 사람들과 코드를 같이 짤 때도 유용하게 쓸 수 있고 혼자 짜더라도 보다 클래스 관리를 체계적으로 할 수 있습니다.
메소드를 완성시키지 않고 추상 메소드로 두려면 무조건 클래스 자체를 추상(abstract) 클래스로 만들어야 합니다. 추상 클래스가 아닌 경우 추상 메소드 또한 사용이 불가합니다. 하지만 추상 클래스 내에서 정의가 완료된 (추상 메소드가 아닌) 메소드는 상속 받아 바로 사용이 가능합니다.
추상 클래스란 곧 아직 완성되지 않은 클래스라는 의미입니다. 완성되지 않은 클래스 안에는 완성되지 않은 메소드가 있기 때문에 이를 재정의해서 사용하면 되는 것이죠. 그 외에는 일반 상속과 같습니다.
간단히 아래와 같은 코드로 사용이 가능합니다.
[ Main.java ]
package study.first;
public class Main {
public static void main(String[] args) {
Calc1 c1 = new Calc1(10, 5);
System.out.println(c1.plus());
System.out.println(c1.minus());
System.out.println(c1.multiple());
System.out.println(c1.division());
c1.printTest();
}
}
[ Calc1.java ]
package study.first;
public class Calc1 extends Calculator{
/* 부모 클래스 생성자 전달 */
public Calc1(int x, int y) {
super(x, y);
}
@Override
int plus() {
return getX() + getY();
}
@Override
int minus() {
return getX() - getY();
}
@Override
int multiple() {
return getX() * getY();
}
@Override
int division() {
return getX() / getY();
}
}
[ Calculator.java ]
package study.first;
public abstract class Calculator {
private int x;
private int y;
/* 생성자 선언 */
public Calculator(int x, int y) {
this.x = x;
this.y = y;
}
/* getter, setter */
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
/* 추상 메소드 */
abstract int plus();
abstract int minus();
abstract int multiple();
abstract int division();
void printTest() {
System.out.println("이건 상속받아 바로 사용 가능");
}
}
728x90
'▸JAVA > 기본 문법' 카테고리의 다른 글
인터페이스와 다중 상속 (4) | 2019.12.10 |
---|---|
애노테이션(annotation) (0) | 2019.12.10 |
클래스 상속 (extends) (0) | 2019.12.10 |
생성자와 this (0) | 2019.12.10 |
Static, Final의 의미와 사용법 (0) | 2019.12.10 |
댓글