DevGang
[Java] 추상화(Abstract) 본문
추상 클래스(Abstract Class)
- 추상 클래스는 객체화될 수 없다. (new, static - x)
- 추상 클래스를 상속한 클래스들의 공통 자료형이다.
- 캡슐 단위의 공통 기능의 집중화를 할 수 있다. (공통화 작업)
추상 메서드(Abstract Method)
- 공통 기능이지만 상속받는 클래스들마다 다른 기능일 경우 자식 클래스에서 구현하도록 한다.
- 구현을 강제할 수 있다. (에러)
- protected 접근 지정자는 상속받는 클래스만 사용할 수 있다.
// 추상화 클래스
public abstract class Exam {
private int kor;
private int math;
public Exam() {
this(0, 0);
}
public Exam(int kor, int math) {
this.kor = kor;
this.math = math;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
public abstract int total();
// protected 접근 지정자는 상속 받는 클래스만 사용할 수 있다.
protected int onTotal() {
return kor + math;
}
public abstract float avg();
}
// 구현 클래스
class NewExam extends Exam {
private int eng;
public NewExam() {
/*
super(0,0);
this.eng = 0;
*/
this(0, 0, 0);
}
public NewExam(int kor, int math, int eng) {
super(kor, math); // 항상 먼저 생성자 호출 후,
this.eng = eng; // 새로운 값을 초기화해야 한다.
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
@Override
public int total() {
return onTotal() + eng;
}
@Override
public float avg() {
return total() / 4.0f;
}
}
'Study > Java' 카테고리의 다른 글
[Java] SOLID (0) | 2021.06.04 |
---|---|
[Java] 생성자 (0) | 2021.05.06 |
[Java] HashMap VS TreeMap (0) | 2021.05.01 |
[Java] ArrayList VS LinkedList (0) | 2021.04.24 |
[Java] JVM(Java Virtual Machine) (0) | 2021.04.18 |
Comments