불로구

27강. (JAVA) 자바 - 추상 클래스, 추상화 본문

프로그래밍/JAVA

27강. (JAVA) 자바 - 추상 클래스, 추상화

맹이맹이 2020. 6. 19. 01:34
반응형

추상 클래스

- 클래스들의 공통적인 특성을 추출해서 선언한 클래스

추상 클래스의 용도

- 공통된 필드와 메소드의 이름을 통일

- 실체 클래스를 작성할 시 시간 절약

추상 클래스 선언

public abstract class A{
 //필드
 //생성자
 //메소드
}
package algo;

abstract class Person{
	String name;
	
	public Person(String name) {
		this.name = name;
	}
	
	public void run(){
		System.out.println(name + "은 달립니다");
	}
}

class A extends Person{
	public A(String name) {
		super(name);
	}
	
	public void runfast(){
		System.out.println(super.name + "은 달리기가 빠릅니다");
	}
}

class B extends Person{
	public B(String name) {
		super(name);
	}
	
	public void runslow(){
		System.out.println(super.name + "은 달리기가 느립니다");
	}
}
public class Test {
	public static void main(String[] args) {
		A a = new A("홍길동");
		a.run();
		a.runfast();
		
		B b = new B("홍길북");
		b.run();
		b.runslow();
	}
}

추상 클래스의 객체를 생성할 수 없기에 자식들의 객체를 생성하여 추상 클래스의 run() 메소드를 사용했다!

추상 메소드와 재정의

- 메소드의 선언만 통일하고, 실행 내용은 실체 클래스마다 달라야 하는 경우가 있다!

- 이럴 때 추상메소드를 재정의 한다

 

[public | protected] abstract 리턴타입 메소드이름(값,..);

자식 클래스는 반드시 추상 메소드를 재정의해서 실행 내용을 작성해야 한다.

현재 부모 클래스의 추상 메서드인 run()을 재정의 하지 않아 오류가 나는 것을 볼 수 있다.

이렇게 재정의를 해주면 오류가 사라지게 되고, 각 자식 클래스에서 실행 내용을 다르게 정의해 주었다.

정리

추상 클래스 : 클래스들의 공통적인 필드와 메소드를 추출해서 선언한 클래스

추상 메소드 : 추상 클래스에서만 선언한 수 있고, 메소드의 선언 부만 있는 메소드, 자식 클래스에서 재정의

혹시나 궁금한 점은 댓글로 남겨주세요!

반응형
Comments