Java protected 접근 제어자

백엔드·2023년 6월 28일
0

자바 문법

목록 보기
4/5
package AccessRestriction2;

public class AnotherClass2 {
	public int num1;
	private int num2;
	protected int num3;
	int num4;
	
	public void test1() {
		System.out.println("test1");
	}
	private void test2() {
		System.out.println("test2");
	}
	protected void test3() {
		System.out.println("test3");
	}
	void test4() {
		System.out.println("test4");
	}
}
package AccessRestriction;
import AccessRestriction2.AnotherClass2;

public class AccessTest extends AnotherClass2{
	
	public static void main(String[] args) {
		
		AnotherClass2 anotherClass2 = new AnotherClass2();
		anotherClass2.num1 = 1;
		System.out.println(anotherClass2.num3); // is not visible error뜸
		
		
	}

}

Error가 난 이유

  • protected는 instance 영역에서 사용이 가능하다

=> 그러므로 AccessTest를 인스턴스화 하거나,

public AccessTest() {
		this.num3 = 20;
		System.out.println(this.num3);
	}

이런식으로 사용이 가능하다



package team1;

public class Circle2 {
	final double PI = 3.14;
	public double rad2;
	protected int num2 = 10;
	
	public void set(double r) {
		rad = r;
	}
	
	// 원의 넓이를 반환하는 메서드
	public double getArea() {
		return (rad*rad)*PI;
	}
}
package team2;
import team1.*;

public class Circle extends Circle2{
	final double PI = 3.14;
	double rad;
	rad2 = 10; // error

	public void setRad(double r) {
		set(num2);
                rad2 = 10 // ok 
		rad = r;
	}
	
	// 원의 둘레 반환
	public double getPerimeter() {
		return (rad * 2) * PI;
	}
	
}
  • 위의 코드와 같이 상속 받은 클래스의 인스턴스 안에서 사용이 가능하다

=> 즉, setRed 메서드는 Circle class를 인스턴스화 한 뒤에 사용되므로

profile
백엔드 개발자

0개의 댓글