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가 난 이유
=> 그러므로 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를 인스턴스화 한 뒤에 사용되므로