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
반응형
'국비과정 > Java' 카테고리의 다른 글
프로젝트를 설계할 때 생각해야할 순서 (0) | 2022.02.17 |
---|---|
자바 inheritance - 상속, 메서드 오버라이딩, 다형성 (0) | 2022.02.15 |
자바 StringTokenizer (0) | 2022.02.14 |
자바 static 메서드 (0) | 2022.02.10 |
자바 객체지향 개념 (0) | 2022.02.08 |