본문 바로가기
MEMO/Java-memo

abstract 정리

by hingu 2024. 5. 24.

추상 클래스(abstrack) => extends 이용하여 로드
abstrack 사용 목적 : 코드 은닉화, 통일성

- 제작시 사용성이 최대한 좋게 하는게 좋다 ( 공용파일이라고 생각하고 제작 )

  • Override : 추상클래스에서 선언한 메소드(상속)
  • Overload : 추상클래스 외에 메소드 생성해서 사용(상속 x)

주의사항(규칙)

  1. abstract 내 메소드 : default,public,protected는 사용가능 (private 사용 불가)
  2. override 활용 - 써도 되고 안써도 됨
  3. 필드에 변수 선언 : public,protected 사용가능 (단, abstract에서 private으로 처리하는 변수일 경우 사용 가능)
  4. abstract에서 즉시실행 메소드는 abstract를 붙이지 않는다
  5. 즉시실행 메소드 호출 시 abstract 메소드가 아닌 실제 class 즉시실행 메소드를 호출

 

접근제한자 ✋ 

접근 제한자는 public, protected, private와 같이 세 가지 종류

public 접근 제한자: 단어 뜻 그대로 외부 클래스가 자유롭게 사용할 수 있음

protected 접근 제한자: 같은 패키지 또는 자식 클래스에서 사용할 수 있음

private 접근 제한자: 단어 뜻 그대로 개인적인 것이라 외부에서 사용될 수 없음

 

위 세 가지 접근 제한자가 적용되지 않으면 default 접근 제한을 가짐

default 접근 제한: 같은 패키지에 소속된 클래스에서만 사용할 수 있음

public class exam19 {
	public static void main(String[] args) {
		//은닉화 : 실제 class엔 없지만 abstract class 내에 존재하는 메소드
		
		new ex19_member(1000).abc();
		//abstract 즉시실행,실제class 즉시실행1000,홍길동 순 출력

	}
}


class ex19_member extends ex19_abs{ //실제 class
	//빨간줄 뜬다면? override 필수/alt+shift+s => override/implement Methods	
	public ex19_member(int a) {
		System.out.println("실제class 즉시실행" + a);
	}
	
	@Override
	public void bbb() {
		//비워놔도 됨	
	}

	@Override
	void bbb(int a) {
		
	}
}

abstract class ex19_abs { //abstarct class - 별도 파일 분리해야함
	private String name = ""; //은닉화
	
	public ex19_abs() {
		System.out.println("abstract 즉시실행");
	} //즉시실행 : 앞에 abstract 붙이면 x 걍 원래 하던것처럼 
	
	protected void abc() { //은닉화
		this.name = "홍길동";
		System.out.println(this.name);	
	} //사용 해도 되고 안해도 됨
	
	abstract public void bbb(); //필수사용(중괄호x)
	abstract void bbb(int a); //필수사용
	
	//추상클래스(abstract)에서는 private 사용 불가, default,public,protected만 가능
	//abstract private void ccc();
}

 

실제 class - alt+shift+s , 즉시실행 메소드는 안뜸

'MEMO > Java-memo' 카테고리의 다른 글

IO,Network 정리  (0) 2024.05.24
interface 정리  (0) 2024.05.24
io.. 헷갈리는...  (0) 2024.05.22
해당 디렉토리에 있는 모든 filelist를 가져오는 코드  (0) 2024.05.22
substring  (0) 2024.05.22