● 접근 권한 제어자(접근자)
1. default
- 다른 패키지에서 접근 불가
2. public
- 모든 곳에서 접근 가능
- 대표 클래스를 의미할 때 사용한다.
- 모든 파일에서 public 클래스는 1개이다.
3. protected
- 다른 패키지에서 접근 불가(자식은 허용)
4. private
- 다른 클래스에서 접근 불가
● 객체 간 타입 비교
1. instanceof
- 객체 instanceof 클래스타입 : 조건식(true 또는 false 중 하나가 나오는 식)
- 객체가 클래스타입이면 true
- 객체가 클래스타입이 아니면 false
실습(접근자)
1. Access.java 파일을 생성하여 private 변수와 public 메소드를 생성한다.
public class Access1 {
int data1 = 10;
public int data2 = 20;
protected int data3 = 30;
private int data4 = 40;
// public 메소드와 private 변수
public int getData4() {
return data4;
}
public void setData4(int data4) {
this.data4 = data4;
}
}
2. Access3.java 파일을 생성하여 Access1에서 생성한 변수 및 메소드를 사용한다.
import access1.Access1;
public class Access3 {
public static void main(String[] args) {
Access1 a1 = new Access1();
Access3 a3 = new Access3();
// private 변수는 메소드를 통해 사용할 수 있다.
a1.setData4(400);
System.out.println(a1.getData4());
}
}

실습(instanceof)
※ 부모클래스(Car)와 자식 클래스(SuperCar) 작성
class Car{
public void engineStart() {
System.out.println("열쇠로 시동 킴");
}
}
class SuperCar extends Car{
@Override // 재정의
public void engineStart() {
System.out.println("음성으로 시동 킴");
}
public void openRoof() { // 부모 클래스에는 없는 새로운 메소드
System.out.println("지붕 열림");
}
}
- main 메소드에서 실행
public class CastingTest {
public static void main(String[] args) {
Car matiz = new Car(); // 부모
SuperCar ferrari = new SuperCar(); // 자식
Car noOptionFerrari = new SuperCar(); // 부모 타입으로 up casting
SuperCar fullOptionFerrari = (SuperCar)noOptionFerrari; // 자식 타입으로 down casting
System.out.println(matiz instanceof Car); // true
System.out.println(matiz instanceof SuperCar); // false
System.out.println(ferrari instanceof Car); // true(부모에게 상속받은 자식 클래스)
System.out.println(ferrari instanceof SuperCar); // true
System.out.println(noOptionFerrari instanceof Car); // true(부모 타입으로 up casting)
System.out.println(noOptionFerrari instanceof SuperCar); // true(부모 타입이지만 자식 타입의 값을 가짐)
System.out.println(fullOptionFerrari instanceof Car); // true(부모에게 상속받은 자식 클래스)
System.out.println(fullOptionFerrari instanceof SuperCar); // true
}
}

'ETC > 복습' 카테고리의 다른 글
[복습_JAVA] 24 (0) | 2022.09.08 |
---|---|
[복습_JAVA] 23 (0) | 2022.09.07 |
[복습_JAVA] 22 (0) | 2022.09.06 |
[복습_JAVA] 21 (0) | 2022.09.02 |
[복습_JAVA] 20 (0) | 2022.09.01 |