☭DEVELOPER/#2 웹개발(자바기반 풀스택)

[BACKEND]JAVA_ECLIPSE15 패키지와 접근 제한자

조반짝 2023. 8. 24. 18:01
728x90
반응형

Import 문


import 문

 

Engine.java를 hyundai 폴더로 옮겨서 오류가 뜨면 change 폴더를 클릭한다.

다른 패키지에 있는 것들을 가져오기

package chapter06.sec06.exam02.mycompany;

import chapter06.sec06.exam02.hyundai.Engine;
import chapter06.sec06.exam02.hankook.*;
import chapter06.sec06.exam02.hankook.Tire;
import chapter06.sec06.exam02.kumho.*;

//import문 자동 정리 단축키 = Ctrl + Shift + O

// 최상위 패키지 chapter06, 하위 패키지 sec06, 그 다음 하위 패키지 exam02,
// 그다음 하위 패키지 mycompany 안에 Car 클래스를 생성합니다.
public class Car {
	
	// 필드 선언
	Engine engine = new Engine();
	SnowTire tire1 = new SnowTire();
	BigWidthTire tire2 = new BigWidthTire();
//	chapter06.sec06.exam02.hankook.Tire tire3 = new chapter06.sec06.exam02.hankook.Tire();
//	chapter06.sec06.exam02.kumho.Tire tire4 = new chapter06.sec06.exam02.kumho.Tire();
	Tire tire3 = new Tire();
	chapter06.sec06.exam02.kumho.Tire tire4 = new chapter06.sec06.exam02.kumho.Tire();
}

 


접근 제한자

접근지시어, 접근 제어자라고도 하며, 접근을 제한하기 위해 사용

접근: 클래스 및 인터페이스, 그들이 가지고있는 멤버의 접근

 

defalut : 같은 패키지 안에서 사용가능 

public : 공용 접근제한, 인터넷으로 배포되는 라이브러리 클래스는 모두 public 접근 제한을 가지고있다.

private :

protected : 상속이 되었을 때 사용가능

 


접근제한자

 

defalut 는 같은 패키지에서는 서로 연동된다.

defalut 다른 패키지엣서는 연동이 안된다.

 

public은 다른 패키지에서도 인식이 된다.


생성자의 접근 제한


생성자의 접근 제한

 

 

 


필드와 메소드 접근 제한

 

 


필드와 메소드의 접근 제한

 

// 같은 패키지 안에 같은 클래스는 모두 인식된다.

 

Base class 생성

private 접근제한자로 설정된 field3 필드는 접근하지 못함

 

case 클래스 생성

package chapter06.sec06.exam05.package1;

// 클래스를 구성하는 멤버인 필드와 메서드에대한 접근 제한자 이해를 위해 Ace 클래스를 코딩
public class Ace {

	//필드 선언
	public int field1; // public 접근 제한자인 int형의 field1 필드 선언
	int field2; // default 접근 제한자인 int형의 field2 필드선언
	private int field3; // private 접근 제한자인 int 형의 field3 필드선언
	
	//메서드 선언
	public void method1() { //public 접근 제한자인 void 타입의  method1()메서드 선언
		
	}
	void method2() { //default 근 제한자인 void 타입의  method2()메서드 선언
	}
	private void method3() { // private 접근 제한자인 void 타입의  method1()메서드 선언
	}
	
	
	// 같은 패키지 안에 같은 클래스는 모두 인식된다.
	//생성자 선언
	public Ace() {
		field1 =1;
		field2 =1;
		field3 =1;
		
		method1();
		method2();
		method3();
	}
}
package chapter06.sec06.exam05.package1;

// 앞서 생성한 Ace 클래스와 같은 패키지(package1) 안에 있는
// Base 클래스 소스 코딩을 통해 접근 제한자를 이해해 봅니다.
public class Base {

	public Base() {
		Ace ace = new Ace();
		ace.field1 = 1;
		ace.field2 = 1;
//		ace.field3 = 1; // Ace 클래스에서 private 접근 제한자로 설정된 field3 필드는 접근하지못함
		
		ace.method1();
		ace.method2();
//		ace.method3(); // Ace 클래스에서 private 접근 제한자로 설정된 method3() 필드는 접근하지못함 
	}
}

 

package chapter06.sec06.exam05.package2;

import chapter06.sec06.exam05.package1.*;

// 앞서 생성한 package1 안에 있는 Ace 클래스를
// 다른 패키지 영역인 package2 안에 생성한 Case 클래스에서 접근해 보는 예시입니다.
public class Case {

	public Case() {

	Ace ace = new Ace();
	ace.field1 = 1;
	// 다른 패키지 영역인 package1 안에서 default로 접근 제한이 되어있기때문에
	// field2 필드는 인식하지 못합니다.
//	ace.field2 = 1; 
	// 다른 패키지 영역인 package1 안에서 private로 접근 제한이 되어있기때문에
	// field2 필드는 인식하지 못합니다.
//	ace.field3 = 1; 
	
	ace.method1();
	// 다른 패키지 영역인 package1 안에서 default로 접근 제한이 되어있기때문에
		// method2 메서드는 인식하지 못합니다.
//		ace.method2 = 1; 
	// 다른 패키지 영역인 package1 안에서 private로 접근 제한이 되어있기때문에
	// method3 메서드는 인식하지 못합니다.
//		ace.method3 = 1; 

	
	
	
	
	
	}
	
}

Getter 와 Setter 메소드

 

Car

package chapter06.sec06.exam06;

//Getter와 Setter 메서드 선언 이해를 위해 Car 클래스를 생성해 줍니다.
public class Car {

	//필드 선언
	private int speed; // private 접근 제한 형식의 int 타입 speed 필드를 선언
	private boolean stop; // private 접근 제한 형식의 boolean타입 stop 필드 선언
	
	//생성자 선언
// 	public Car() {}
	
	//메서드 선언: Getter와 Setter 선언 시 이클립스 개발툴에서는
	// Source - Generate Getter and Setter ... 메뉴를 활용하여, 자동 메서드 생성이 가능
	
	public int getSpeed() {
		return speed;
	}
	public void setSpeed(int speed) {
		if(speed < 0) {
		this.speed = 0;
		return;
	}else {
	} this .speed = speed;
}
	public boolean isStop() { //멈춤
		return stop;
	}
	public void setStop(boolean stop) { //
		this.stop = stop;
		this.speed = 0; // stop이 true일 때 0 , 스피드도 0으로 해서 중지시킴
	}
	
	
	
}

car exaple class

package chapter06.sec06.exam06;

// 앞서 생성한 Car 클래스를 활용하여, CarExample 실행 클래스를 소스코딩합니다.
public class CarExample {

	public static void main(String[] args) {
		
		Car myCar = new Car();
		
		// 잘못된 속도 설정 이루어질 경우,
		myCar.setSpeed(-50);
		System.out.println("현재 속도 = " + myCar.getSpeed()); //현재 속도 0
		
		//멈춤(stop) 상태일 경우, stop이 true인 경우,
		if(myCar.isStop()) {
			myCar.setStop(true);
		}
		
		System.out.println("현재속도 =" + myCar.getSpeed());
	}
}

 

정리

 

728x90
반응형