Java(Class2)_abstract_01

2024. 10. 31. 19:29·Java/기초 내용 정리

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
'Java/기초 내용 정리' 카테고리의 다른 글
  • Java(Class2)_abstract_03
  • Java(Class2)_abstract_02
  • Java(GUI)_JRadioButton_09
  • Java(GUI)_JCheckBox_08
mw41817
mw41817
일생의 개발 기록 저장소
  • mw41817
    IT 개발 일지
    mw41817
    • Index (487)
      • HTML (36)
        • 기초 내용 정리 (36)
      • CSS (29)
        • 기초 내용 정리 (29)
      • JavaScript (60)
        • 기초 내용 정리 (60)
      • JQuery (38)
        • 기초 내용 정리 (38)
      • Java (232)
        • 기초 내용 정리 (232)
      • JSP (46)
        • 기초 내용 정리 (46)
      • Spring, Boot (31)
        • 기초 내용 정리 (31)
      • DB (5)
        • Oracle SQL (5)
      • Code WorkBook (6)
        • programmers (6)
        • Baekjoon (0)
      • 기타 (1)
        • 유용한 사이트 (3)
  • 전체
    오늘
    어제
  • 글쓰기 관리
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 카테고리
    • 주인장 GitHub
  • 공지사항

  • 인기 글

  • 태그

    html #코딩 #프로그래밍 #기초
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
mw41817
Java(Class2)_abstract_01
상단으로

티스토리툴바