접근제한자(Access Modifier)
- 클래스, 필드, 생성자, 메소드 작성시 클래스 외부의 접근을 제한하기 위해 사용하는 제한자
- private
- public
- protected
- package(default)
@SuppressWarnings 어노테이션
- 컴파일러가 경고하는 내용 중 "이 부분은 경고하지마"하고 제외할 때 사용
@SuppressWarnings("내용");
- all : 모든 경고를 억제
- cast : 캐스트 연산자 관련 경고 억제
- dep-ann : 사용하지 말아야 할 주석 관련 경고 억제
- deprecation : 사용하지 말아야 할 메소드 관련 경고 억제
- fallthrough : switch문에서의 break 누락 관련 경고 억제
- finally : 반환하지 않는 finally 블럭 관련 경고 억제
- null : null 분석 관련 경고 억제
- rawtypes : 제네릭을 사용하는 클래스 매개 변수가 불특정일 때의 경고 억제
- unchecked : 검증되지 않은 연산자 관련 경고 억제
- unused : 사용하지 않는 코드 관련 경고 억제
private
- 필드, 생성자, 메소드의 접근을 제한하기 위한 접근제한자
- 필드, 생성자, 메소드를 클래스에서만 사용 가능하도록 설정하는 접근제한자 - 은닉화
- 다른 클래스에서 필드, 생성자, 메소드를 사용할 경우 에러 발생
PrivateMember
public class PrivateMember {
private int num;
@SuppressWarnings("unused")
private void display() {
System.out.println("num = "+num);
}
}
PrivateMemberUse
public class PrivateMemberUse {
public void run() {
@SuppressWarnings("unused")
PrivateMember member = new PrivateMember();
}
}
public
- 클래스, 필드, 생성자, 메소드의 접근을 제한하기 위한 접근 제한자
- 클래스, 필드, 생성자, 메소드를 같은 패키지 및 다른 패키지의 클래스에서 사용 가능하도록 설정하는 접근 제한자
- 하나의 Java 소스파일에 다수의 Java 자료형(클래스, 인터페이스, 열거형 등) 선언 가능 - 비권장
- 하나의 Java 소스파일에는 public 접근제한자를 사용한 Java 자료형을 하나만 선언 가능
- public 접근제한자를 사용한 Java 자료형의 이름으로 소스파일명 저장
PublicMember
public class PublicMember {
public int num;
public void display() {
System.out.println("num = "+num);
}
}
PublicMemberUse
public class PublicMemberUse {
public void run() {
PublicMember member=new PublicMember();
member.num=100;
member.display();
}
}
PublicMemberOtherUse(다른 패키지에서 사용)
import xyz.it.access.PublicMember;
public class PublicMemberOtherUse {
public void run() {
PublicMember member=new PublicMember();
member.num=100;
member.display();
}
}
protected
- 필드, 생성자, 메소드의 접근을 제한하기 위한 접근제한자
- 필드, 생성자, 메소드를 같은 패키지의 클래스에서 사용 가능하도록 설정하는 접근 제한자
- 필드, 생성자, 메소드를 다른 패키지의 클래스에서 사용할 경우 에러가 발생되지만 클래스를 상속받을 경우 필드, 생성자, 메소드 사용 가능
ProtectedMember
public class ProtectedMember {
protected int num;
protected void display() {
System.out.println("num = "+num);
}
}
ProtectedMemberUse
public class ProtectedMemberUse {
public void run() {
ProtectedMember member=new ProtectedMember();
member.num=100;
member.display();
}
}
ProtectedMemberOtherUse (다른 패키지에서 사용)
public class ProtectedMemberOtherUse {
public void run() {
@SuppressWarnings("unused")
ProtectedMember member=new ProtectedMember();
}
}
ProtectedMemberOtherInheritanceUse (다른 패키지에서 사용 [상속 받았을 때])
public class ProtectedMemberOtherInheritanceUse extends ProtectedMember {
public void run() {
num=100;
display();
}
}
package
- 클래스, 필드, 생성자, 메소드의 접근을 제한하기 위한 접근 제한자
- 클래스, 필드, 생성자, 메소드 작성시 접근 제한자 관련 키워드(private, protected, public)를 사용하지 않으면 자동으로 package 접근 제한자로 처리
- 클래스, 필드, 생성자, 메소드를 같은 패키지의 클래스에서 사용 가능하도록 설정하는 접근 제한자
- 클래스, 필드, 생성자, 메소드를 다른 패키지의 클래스에서 사용할 경우 에러 발생
PackageMember
public class PackageMember {
int num;
void display() {
System.out.println("num = "+num);
}
}
PackageMemberUse
public class PackageMemberUse {
public void run() {
PackageMember member=new PackageMember();
member.num=100;
member.display();
}
}
PackageMemberOtherUse (다른 패키지에서 사용)
public class PackageMemberOtherUse {
public void run() {
@SuppressWarnings("unused")
PackageMember member=new PackageMember();
}
}
PackageMemberOtherInheritanceUse (다른 패키지에서 사용 [상속 받았을 때])
public class PackageMemberOtherInheritanceUse extends PackageMember {
public void run() {
}
}