추상 클래스 : 미 완성된 클래스

abstract class SomeClass {
}

추상 클래스를 확장(자식)한 클래스에서 필드나 메서드를 추가하여 완성된 형태의 데이터 타입을 만들어 사용하기 위한 목적

자기 자신의 객체를 만들어 사용할 수 없고 확장(자식) 클래스를  만들어 확장 클래스의 객체를 만들어 사용하기 위한 목적

성적표 데이터 타입을 만드는데  국어,수학은 필수 과목이고(필수 데이터 타입) 영어, 프랑스어, 스페인어, 독일어가 선택이라고 할때 학생이 선택한 선택 과목에 따라 데이터 타입이 달라야 한다.

// Report 타입은 국어, 수학만 필드로 가지고 있어 
// 학생의 성적표 데이터 타입으로 사용 불가 -> abstract 접근자를 붙여 추상클래스로 변경
public abstract class Report { 
	public int kor;
	public int mat;
}
public class ReportEng extends Report {
	public int eng;
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="inheritance.*" %>
<%
	ReportEng report = new ReportEng();
	report.kor = 100;
	report.math = 100;
	report.eng = 100;
%>

 

추상 메서드 : 미 완성된 메서드, 추상 메서드를 가지는 클래스는 무조건 추상 클래스가 되어야 한다. (미완성된 메서드를 가지므로 클래스 또한 미완성 형태가 되어 추상 클래스가 되어야 한다)

abstract void someMethod();

 추상 메서드를 가진 추상 클래스를 확장(자식)한 클래스에서 완성해서 사용하기 위한 목적

abstract public class Person {
	public int age;
	public String name;
	abstract public void work();
}
public class PersonSinger extends Person{
	public void work() {
		System.out.println("노래를 부른다");
	}
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="inheritance.*" %>
<%
	PersonSinger person = new PersonSinger();
	person.work();
%>

+ Recent posts