Small Grey Outline Pointer Java 추상 클래스
본문 바로가기
Dev./java

Java 추상 클래스

by sso. 2022. 6. 12.

추상 클래스(불완전한 클래스)

추상적인 내용만 정의하고 있는 클래스로 
구체적인 내용은 하위 클래스에서 구현되도록 해놓은 클래스

추상클래스는(부모) 클래스들의(자식) 공통요소들을 가상화 시켜놓는다
객체화는 가능하나 잘 사용하지 않는다(목적에 어긋난다)

부모 추상클래스의 역할은 단지 자식 클래스를 만들 때 도와주는 역할을 수행하기 위해 존재한다(다형성)
자식클래스에서 재정의할 메서드의 이름만 가지고 있다
즉, {} 바디를 가지지 않는다
그 메서드를 추상 메서드라고 하며, abstract 키워드가 앞에 붙는다
하지만 일반 메서드도 선언 가능하다


abstract 추상클래스명{
abstract 추상 메서드();
}


추상 메서드는 자식 클래스에서 강제적으로 반드시 재정의 해야 한다
강제성을 부여한다



클래스 생성시 abstract에 체크
추상클래스 표시 됨

package day19;

public abstract class Shape {
	
}

자동으로 abstract가 생성 된다

 

 


package day19;

public abstract class Shape {
	double area;
	
	abstract void showArea(double w, double h); // {} body가 없으므로 앞에 abstract 붙여준다
	
	//메서드에 파이널을 붙이면 절대 재정의 할 수 없다 => 자식 클래스에서 재정의x, 사용만 하라는 목적
	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²");
	}
}

 

 

 

package day19;

public class Board {
	public static void main(String[] args) {
		new Rect().showArea(10, 50);
		//값만 확인하기 위해 객체 만들지 않고, new를 바로 썼다.
		new Tri().showArea(30, 15.9);
	}
}

넓이: 500.0cm²
삼각형 넓이: 238.5cm²

 

 

 

 

 

728x90

'Dev. > java' 카테고리의 다른 글

Java :: 인터페이스  (0) 2022.07.03
[Java] TMS 대중교통 터미널 시스템 만들기  (0) 2022.06.17
Java :: 다형성/ 싱글턴 패턴  (0) 2022.06.12
Java Casting/instance of  (0) 2022.06.11
Java 클래스 배열  (0) 2022.06.11

댓글