[접근 지정자]
1. 접근 지정자 개요
- 접근 지정자 : 클래스의 멤버 변수 또는 메서드에 접근할 수 있는 수준을 나타내는 키워드
- 종류 : private, protected, public
-> private : 클래스 내부에서만 접근 가능
-> protected : 클래스 내부와 상속받은 클래스, 동일 패키지 내의 클래스에서 접근 가능
-> public : 클래스 외부에서 제한 없이 접근 가능
- 생략 시 : 접근 지정자를 생략했을 경우 클래스 내부와 동일 패키지 또는 동일 디렉터리 내에서 접근 가능
- 일반적으로 멤버변수는 private으로, 메서드는 public으로 지정하여 멤버 변수에 쉽게 접근하지 못하도록 하고 메서드를 통해서만 접근할 수 있도록 함
2. 접근 지정자 활용
1) private 사용 예
class Car {
private int speed = 100; -> 이 클래스 내부에서만 접근 가능
}
class Truck extends Car { -> car 클래스를 상속받음
Truck() -> 생성자
speed = 120; //에러! 상속받은 클래스에서 접근 불가능
}
}
public static void main(String args[]) {
Truck truck = new Truck();
truck.speed = 110; //에러! 클래스 외부이므로 접근 불가능
}
2) protected 사용 예
class Car {
protected int speed = 100;
}
class Truck extends Cart {
Truck() {
speed = 120; //상속받은 클래스이므로 protected 멤버 변수에 접근 가능
}
public static void main(String args[]) { -> 메인 메서드
Truck car = new Truck();
car.speed = 100; //동일 디렉터리 안에 있으므로 접근 가능
}
3) public 사용 예
class Car {
public int speed = 100;
public speedUp() { -> speedUp 메서드 추가
speed += 10;
}
}
class Truck extends Car { -> Truck 클래스 생성
Truck() {
speed = 120; //상속받은 클래스에서 제한 없이 접근 가능
}
}
public static void main(String args[]) {
Car car = new Car();
car.speed = 110; //클래스 외부에서도 제한 없이 접근 가능
car.speedUp(); //public 메서드의 경우 외부에서 제한없이 접근 가능
Truck truck = new Truck(); -> Truck class를 객체 변수로 만들어 사용
truck.speed = 100; //클래스 외부에서도 제한 없이 접근 가능
}
[실습]
1) 상속과 접근 지정자 사용 예
class Car2 { -> Car2 클래스 선언
private int speed = 100;
public void speedUp() { -> 반환 값이 없는 speedUp 메서드
speed += 10;
}
}
class Truck extends Car2 { -> 상속받은 클래스
private int weight = 50000;
}
public class Exam13_1 { -> 메인이므로 제목 Exam13_1으로 지정해야 함
public static void main(String[] args) {
Truck truck = new Truck(); -> Truck 클래스의 객체 변수 truck 작성
//truck.speed = 100; -> speed 속성은 private이므로 클래스 외부에서 사용 불가
truck.speedUp(); -> speedUp은 public이므로 사용 가능
//truck.weight = 3000; -> weight 속성도 private이므로 Truck클래스 외부에서는 접근 불가능
}
}
2)
'프로그래밍 > 자바(java) 융합개발자 2차' 카테고리의 다른 글
[취성패] 자바 배우기 - 선수학습(인터페이스) (0) | 2020.12.13 |
---|---|
[취성패] 자바 배우기 - 선수학습(추상 클래스) (0) | 2020.12.13 |
[취성패] 자바 배우기 - 선수학습(static) (2) | 2020.12.12 |
[취성패] 자바 배우기 - 선수학습(생성자) (0) | 2020.12.12 |
[취성패] 자바 배우기 - 선수학습(메서드와 오버로딩) (0) | 2020.12.12 |