본문 바로가기

개발자노트

클래스) 추상클래스

1. 과거에 공통특성을 지닌 클래스들을 묶어서
   그들의 부모 클래스를 정의하고싶었다.

2. 이 때 사용되는게 추상클래스 
   추상클래스 -> 클래스들을 묶은것
   붕어빵틀의 틀( 붕어빵 틀은 이렇게 생겨야해!! 라는 가이드라인)
   붕어빵을 굽는 것에는 관심XX
      => 객체를 생성 XX
   추상클래스의 관심은 오로지 "틀"
   앞으로의 클래스들이 어떻게 구성되어야하는지에만 관심이 있음.
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
3. 현재에는 붕어빵틀들의 틀로써만 사용!
4. 앞으로 만들 클래스들을 정의하는데에 사용!!
5. 객체를 생성하지 않는다. ★★★

 

package class02;
// [추상클래스]
// 객체화를 하지 못하게 "강제" --> 실수 할 일을 줄여줌 
abstract class Shape{ // 객체 생성을 위해서 사용해서 만든 것이 아니라 -> 클래스들을 정의하기 위해 만든것
	int a; // 점, 선 모양이라면 가지고 있을 요소
	void draw() {
		System.out.println("모양 그리기");
	}
	void showInfo() {
		System.out.println("모양: "+this.a);
	}
	Shape(int a){ // 객체화,인스턴스화를 못할 뿐이지 생성자 정의 가능함!! -> 자식 생성자에서 호출한다!!
		this.a=a;
	}
}
class Circle extends Shape{
	int radius;
	Circle(int a,int radius){
		super(a);
		this.radius=radius;
	}
}
public class Test02 {

	public static void main(String[] args) {
		//Shape s=new Shape();
		//추상클래스:객체화,인스턴스화 못함!
		//객체화,인스턴스화를 못할 뿐이지 기존에 부모클래스의 역할은 할 수 있다.
		
		
		
		
	}

}