2024-10-31



calc() 메서드 호출 >>> 137
추상 메서드 재정의 했어요!!!
package abstracts;
/*
* 추상 클래스(abstract class)?
* 1. 추상 메서드를 포함하는 클래스.
* 2. 추상 메서드는 본체(body)가 없는 매서드.
* ==> 선언은 되어 있으나 코드가 구현되지 않은 껍데기만
* 있는 메서드를 말함.
* 예) void display(); // {} 가 없음.
* 3. 클래스 앞에 abstract 키워드를 붙여야 한다.
* 4. 추상 메서드를 재정의 하지 않으면 error 가 발생.
* ==> 추상 메서드 재정의 강제성.
* 5. 추상 클래스는 객체 생성이 불가능.
* ==> - 자식 클래스를 대상으로 객체 생성
* - 원칙적으로 자식 클래스도 추상 클래스임.
* 이유는 추상 클래스에서 멤버를 상속을 받았기 때문.
* - 하지만 부모의 추상 메서드를 재정의하게 되면 객체
* 생성이 가능함.
* 6. 추상 클래스는 추상 메서드를 가진 클래스를 말함.
* 7. 물론 일반 멤버변수와 멤버메서드를 가질 수 있음.
* 8. 그러나 한 개 이상의 추상 메서드는 반드시 존재해야 함.
* 형식)
* [접근제한] abstract class 클래스이름{ }
*
* 9. - 응용 프로그램에서 설계와 구현 부분을 분리해서 작업 시
* 사용함.
* - 추상 클래스를 책에 목차에 비유를 하면, 서브 클래스는
* 목차에 따라 완성된 책과 같음. 책을 쓸 때도 목차를
* 잡아 놓고 책을 쓰면 쉽고 빠르면 방향이 흐트러지지 않는
* 것 처럼 추상 클래스를 이용하면 응용 프로그램의 설계와
* 구현을 분리할 수 있음.
*/
/*
* 추상 클래스에서 error 발생 시 처리 방법 - 2가지
* 1. 자식 클래스에서 추상 메서드 재정의(o)
* 2. 자식 클래스에서 추상 메서드를 재정의 하지 않는 경우
* ==> 자식 클래스 이름 앞에 abstract 키워드를 붙여야함.
*/
public abstract class Super { // 추상 클래스
int num; // 인스턴스 멤버변수
int calc() {
return num + 100; // 인스턴스 멤버메서드
}
abstract void output(); // 추상 메서드
}
package abstracts;
public class Sub extends Super {
@Override
void output() {
System.out.println("추상 메서드 재정의 했어요!!!");
}
}
package abstracts;
public class Super_01 {
public static void main(String[] args) {
// 추상클래스이므로 객채 생성 불가능.
//Super super = new Super();
Sub sub = new Sub();
sub.num = 37;
System.out.println("calc() 메서드 호출 >>> " + sub.calc());
sub.output();
}
}'Java > 기초 내용 정리' 카테고리의 다른 글
| Java(Class2)_abstract_03 (0) | 2024.10.31 |
|---|---|
| Java(Class2)_abstract_02 (0) | 2024.10.31 |
| Java(GUI)_JRadioButton_09 (0) | 2024.10.30 |
| Java(GUI)_JCheckBox_08 (0) | 2024.10.30 |
| Java(GUI)_JCheckBox_07 (0) | 2024.10.30 |