자바 접근제어자

728x90

접근제어자 private

private을 넣으면 현재 클래스에서만 접근 가능하도록 데이터의 접근 범위를 제한

  • 따라서 다른 클래스에서 Mart를 선언하여 출력한다고 해도 오류가 발생함
public class Mart {
//	field
	private int benefit; // 이윤
	private int applenumber; //사과 잔고
	private int appleprice; //사과 단가

 

아무것도 지정안할 경우에는 default값으로 지정되는데 default값은 같은 package내에서 접근이 가능함

public일 경우에는 어디서나 이클립스 안이라면 선언이 가능하다

public class Mart {
//	field
	int benefit; // 이윤
	public int applenumber; //사과 잔고
	int appleprice; //사과 단가

 


다른 패키지에서의 선언

다른 패키지에서 불러올때 그 패키지의 이름을 쓰고 패키지의 클래스 이름을 선언한다

이 때 클래스의 이름만 public으로 선언하는 것이 아니라 그 클래스의 생성자까지 public으로 선언해야 오류가 발생하지 않음

  • 이유: 객체를 선언하여 호출하면 객체의 멤버변수를 초기화시키기 위해 생성자도 호출해야 하므로 public으로 지정해줘야 함
public class AppleMain {
	public static void main(String[] args) {
		Apple.Buyer b = new Apple.Buyer(10000);
//		다른 패키지에서 불러올때 그 패키지의 이름을 쓰고 패키지의 클래스 이름을 선언한다
	}
}

 

다른 패키지의 클래스를 불러올 때 클래스안의 클래스를 불러오고 싶다면 선언하는 클래스 내부에 원하는 클래스의 객체를 생성하여 원하는 기능의 메서드를 구현한다.

public class Calculator {
	Adder adder = new Adder();
	Subtractor subtractor = new Subtractor();
//	원하는 클래스의 객체를 선언하여	
	
	public Calculator() {
	}
//	아래처럼 원하는 기능의 메서드를 작성하여 호출
	public int addTwoNumber(int i, int j) {
		int result = 0;
		result = adder.addTwoNumber(i, j);
		return result;
	}
	public int subTwoNumber(int i, int j) {
		int result = subtractor.subTwoNumber(i, j);
		return result;
	}
}
class Adder{
	private int cntAdd;
	
	Adder(){
		cntAdd = 0;
	}
	
	int addTwoNumber(int n1, int n2) {
		cntAdd++;
		return n1+n2;
	}

	public int getCntAdd() {
		return cntAdd;
	}

	public void setCntAdd(int cntAdd) {
		this.cntAdd = cntAdd;
	}
}

class Subtractor{
	private int cntSub;
	
	Subtractor() {
		this.cntSub = 0;
	}
	int subTwoNumber(int n1, int n2) {
		cntSub++;
		return n1-n2;
	}
	int getCntSub() {
		return cntSub;
	}
}

 

그 후에 선언한 하나의 클래스로 동일한 기능의 메서드를 구현 가능

출력문: 5

import Calculator.Calculator;

public class CalculatorMain {
	public static void main(String[] args) {
		Calculator ca = new Calculator();
		int result = ca.addTwoNumber(3, 2);
		System.out.println(result);
//		출력: 5

	}
}
728x90