본문 바로가기

ETC/복습

[복습_JAVA] 25

● 접근 권한 제어자(접근자)

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