2024-11-01


num3 >>> 30
num4 >>> 40
package accessOne;
/*
* 접근지정자(접근제어자)
* - 접근지정자는 클래스, 멤버변수, 멤버메서드 앞에 사용이 됨.
* - 외부로부터 접근을 제어한다는 의미를 가지고 있음.
* - 접근지정자가 사용되는 곳 : 클래스, 멤버변수, 멤버메서드, 생성자
* - 이들 접근지정자 중 protected, private 접근지정자는 클래스
* 앞에는 사용을 못 함.
* 단, Inner Class 앞에는 사용이 가능함.
*
* 1. private : - 동일한 클래스에서만 접근이 가능함.
* - 외부에서 인스턴스 변수를 바로 접근이 가능하게 제어를
* 하면 잘못된 데이터를 저장할 수 있는 문제가 발생함.
* - 따라서 직접적인 접근을 제어하고 메서드(setter(),
* getter())를 사용하여 접근하게 함.
*
* 2. default : - 동일한 패키지에서만 접근이 가능함. default
* 키워드는 생략이 가능함.
* - 같은 클래스의 멤버, 같은 패키지 안의 다른 클래스의
* 멤버까지만 접근이 가능함.
* - 다른 패키지의 상속 관계에 있는 클래스라도 접근이
* 불가능함.
*
* 3. protected : - 같은 클래스의 멤버, 같은 패키지 안의 다른
* 클래스의 멤버까지만 접근이 가능함.
* - 다른 패키지의 상속 관계에 있는 클래스의 멤버에도
* 접근이 가능함.
*
* 4. public : - 모든 클래스에서 접근이 가능함.
* - 같은 클래스의 멤버, 같은 패키지 안의 다른 클래스의
* 멤버까지만 접근이 가능함.
* - 다른 패키지의 상속 관계에 있는 클래스의 멤버, 다른
* 패키지의 클래스에 있는 멤버까지 접근이 가능함.
*
* [접근범위(scope)]
* ==> public > protected > default > private
*/
public class Super {
// 멤버변수
private int num1 = 10; // 접근지정자 : private
int num2 = 20; // 접근지정자 : default
protected int num3 = 30; // 접근지정자 : protected
public int num4 = 40; // 접근지정자 : public
}
package accessTwo;
import accessOne.Super; // 다른 패키지에 있는 클래스 사용으로 import 출현.
public class Sub extends Super{
public static void main(String[] args) {
Sub sub = new Sub();
// 해당 클래스에서만 접근이 가능함, ==> private
//System.out.println("num1 >>> " + sub.num1);
// 동일한 패키지 내에서만 접근이 가능함. ==> default
//System.out.println("num2 >>> " + sub.num2);
// 패키지가 다르더라도 상속관계이면 접근이 가능함. ==> protected
System.out.println("num3 >>> " + sub.num3);
// 모든 클래스에서 접근이 가능함. ==> public
System.out.println("num4 >>> " + sub.num4);
}
}'Java > 기초 내용 정리' 카테고리의 다른 글
| Java(Class2)_Package_01 (0) | 2024.11.01 |
|---|---|
| Java(Class2)_Final_01 (0) | 2024.11.01 |
| Java(Class2)_Polymorphism_03 (0) | 2024.11.01 |
| Java(Class2)_Polymorphism_02 (0) | 2024.11.01 |
| Java(Class2)_Polymorphism_01 (0) | 2024.11.01 |