추상 클래스(abstrack) => extends 이용하여 로드
abstrack 사용 목적 : 코드 은닉화, 통일성
- 제작시 사용성이 최대한 좋게 하는게 좋다 ( 공용파일이라고 생각하고 제작 )
- Override : 추상클래스에서 선언한 메소드(상속)
- Overload : 추상클래스 외에 메소드 생성해서 사용(상속 x)
주의사항(규칙)
- abstract 내 메소드 : default,public,protected는 사용가능 (private 사용 불가)
- override 활용 - 써도 되고 안써도 됨
- 필드에 변수 선언 : public,protected 사용가능 (단, abstract에서 private으로 처리하는 변수일 경우 사용 가능)
- abstract에서 즉시실행 메소드는 abstract를 붙이지 않는다
- 즉시실행 메소드 호출 시 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();
}
'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 |