728x90
final 클래스와 final 메소드
final 필드 : 수정불가 필드
final 클래스 : 부모로 사용 불가한 클래스
final 메소드 : 자식이 재정의 할 수 없는 메소드
상속할 수 없는 final 클래스
자식 클래스 만들지 못하도록 final 클래스로 생성
public final class 클래스{...}
public final class String {...}
//아래는 이렇게 하면 안된다는 예시
public class NewString extends String {...}
오버라이딩 불가한 final 메소드
자식클래스가 재정의 못하도록 부모클래스의 메소드를 final로 생성
접근제한 | 적용할 내용 | 접근할 수 없는 클래스 |
public | 클래스, 필드, 생성자, 메소드 | 없음 |
protected | 필드, 생성자, 메소드 | 자식클래스가 아닌 다른 패키지에 소속된 클래스 |
default | 클래스, 필드, 생성자, 메소드 | 다른 패키지에 소속된 클래스 |
private | 필드, 생성자, 메소드 | 모든 외부 클래스 |
protected : 다른패키지에 있어도 상속된건 가능, 상속된 것 외에 다른 것들은 안된다.
default : 같은패키지내에서만
private : 나홀로
* 지역변수는 접근제한자 선언 불가능
package package1;
public class A{
protected String field;
protected A() {
}
protected void method() {
}
}
package package2;
import package.A;
public class D extends A{
public D() {
super();
this.field = "value";
this.method();
}
}
D는 A의 자식 클래스로 A와 다른 패키지에 있지만 필드, 생성자, 메소드에 접근이 가능하다.
new연산자를 사용해서 생성자를 직접 호출할수는 없고 자식 생성자에서 super() 로 생성자를 호출할수있다.
이미지 출처 : 이것이자바다
728x90
'STUDY > JAVA' 카테고리의 다른 글
[JAVA] 22-06-29 다형성 형변환 ☑ (0) | 2022.06.29 |
---|---|
[JAVA] 22-06-28 상속을 이용해 샌드위치 만들기 문제 ☑ (0) | 2022.06.28 |
[JAVA] 메소드 재정의, 상속 등을 이용해 게임 만들기 (0) | 2022.06.27 |
[JAVA] 22-06-27 메소드 재정의 (Override) ☑ (0) | 2022.06.27 |
[JAVA] 22-06-24 상속(Inheritance) ☑ (0) | 2022.06.24 |