프로그래밍

[자바 기초] day11 : 추상화(abstract) 본문

자바/자바 기초

[자바 기초] day11 : 추상화(abstract)

시케 2023. 5. 18. 17:26
728x90
반응형

2023.05.17.수

추상화

지금까지의 여러 문제를 풀다보면 어떠한 질문이 떠오를 수 있다

사실 부모 클래스는 객체로써 없는 것이 아닌가?예를 들어 동물 클래스가 있고 자식으로 강아지, 고양이를 두었을때결론적으로 강아지, 고양이 객체만 만들며 동물 클래스는 실질적으로 사용하지 않는다

 

결론적으론 그 의문은 사실이다

 

동물 클래스는 객체화 하는 것이 목표가 아닌 설계 하는 것이 목표였던  "클래스"
클래스들의 기준이 되는 것이 목표

 

이러한 클래스들을 추상클래스라고 한다

 

[ 추상클래스 ]

  1. 객체화(인스턴스화) 불가
  2. 추상 메서드를 가질 수 있다
  3. 생성자를 가질 수는 있지만 new를 하지 못한다(객체화 불가)

추상 메서드

추상 메서드는 오버라이딩 강제하며 바디(중괄호 부분)을 가질 수 없다

 

추상 메서드가 있는 부모 클래스를 상속받으면

자식 클래스에서도 무조건 해당 메소드를 오버라이딩 해야한다

 

만약 오버라이딩을 안한다면

  1. 구현을 강제하거나
  2. 상속 받은 클래스도 abstract로 추상 클래스화 한다

예시)

package class01;

abstract class Shape{
	String name;
	double area;
	abstract void draw(); //추상 메서드
	
}

class Rect extends Shape{

	@Override
	void draw() {// 오버라이딩을 하지 않으면 에러 발생
		System.out.println("네모 그리기");
	}
}

class Circle extends Shape{
	@Override
	void draw() {
		System.out.println("원 그리기");
	}
}

class Tri extends Shape{	
	@Override
	void draw() {
		System.out.println("사각형 그리기");
	}	
}

public class Test02 {

	public static void main(String[] args) {

	}

}

 

728x90
반응형
Comments