19일차 추상클래스
추상 클래스(불완전한 클래스)
추상적인 내용만 정의하고 있는 클래스로 구체적인 내용은
하위 클래스에서 구현되도록 해놓은 클래스
특징
- 추상클래스는(부모) 클래스들의(자식) 공통요소들을 가상화 시켜놓는다.
- 객체화는 가능하나 잘 사용하지 않는다. (목적에 어긋난다.)
- 부모 추상클래스의 역할은 단지 자식 클래스를 만들 때 도와주는 역할을 수행하기 위해 존재한다. (다형성:polymorphism)
- 자식 클래스에서 재정의할 메서드의 이름만 가지고 있다.
즉, {}(바디)를 가지지 않는다. - 그 메서드를 추상 메서드라고 하며, abstract 키워드가 앞에 붙는다.
- 하지만 일반 메서드도 선언 가능하다.
선언
abstract 추상클래스명{
abstract 추상메서드명();
}
추상메서드는 자식클래스에서 강제적으로 반드시 재정의 해야한다.
강제성을 부여한다.
- 추상에서 abstract void draw(); 선언만 해놓을 수 있음! -> 자식클래스 상속해서
재정의 해야 한다.
(실습예제)
public abstract class Shape {
//일반변수 선언
double area;
//추상메서드 : 면적 구하기
abstract void showArea(double w, double h);
//일반메서드 : final : 자식클래스에서 재정의 하는것을 막기위해서, 사용의 목적만!
final void function() {
System.out.println("추상 클래스의 일반 메서드입니다.");
}
}
class Rect extends Shape{
@Override
void showArea(double w, double h) {
area = w*h;
System.out.println("넓이 : "+area+"cm²");
}}
class Tri extends Shape{
@Override
void showArea(double w, double h) {
area = (w*h)/2;
System.out.println("넓이 : "+area+"cm²");
}}
(다른 클래스에서 실행)
public class Board {
public static void main(String[] args) {
new Rect().showArea(10, 50);
new Tri().showArea(30, 15.9);
}}
(실행결과)
Author And Source
이 문제에 관하여(19일차 추상클래스), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jamiview/19일차-추상클래스저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)