반응형
Notice
Recent Posts
Recent Comments
Link
불로구
27강. (JAVA) 자바 - 추상 클래스, 추상화 본문
반응형
추상 클래스
- 클래스들의 공통적인 특성을 추출해서 선언한 클래스
추상 클래스의 용도
- 공통된 필드와 메소드의 이름을 통일
- 실체 클래스를 작성할 시 시간 절약
추상 클래스 선언
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()을 재정의 하지 않아 오류가 나는 것을 볼 수 있다.
이렇게 재정의를 해주면 오류가 사라지게 되고, 각 자식 클래스에서 실행 내용을 다르게 정의해 주었다.
정리
추상 클래스 : 클래스들의 공통적인 필드와 메소드를 추출해서 선언한 클래스
추상 메소드 : 추상 클래스에서만 선언한 수 있고, 메소드의 선언 부만 있는 메소드, 자식 클래스에서 재정의
혹시나 궁금한 점은 댓글로 남겨주세요!
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
29강. (JAVA) 자바 - 중첩 클래스 (0) | 2020.06.30 |
---|---|
28강. (JAVA) 자바 - 인터페이스(interface) (0) | 2020.06.21 |
26강. (JAVA) 자바 - 객체 타입 확인 (instanceof) (2) (0) | 2020.06.16 |
25강. (JAVA) 자바 - 타입 변환 & 다형성 (1) (0) | 2020.06.16 |
24강. (JAVA) 자바 - 부모 메소드 호출(super) & final (0) | 2020.06.16 |
Comments