접근지정자
1. private: 같은 클래스
2. protected: 상속 시 어디서든지(public), 상속이 아닐 시 같은 폴더(default)에서 접근 가능
3. public: 어디서든
- default: 같은 디렉토리, 같은 패키지 안에서만 접근 허용. 접근지정자를 아무것도 안붙혔을 때가 default이다
왜 protected가 생겨났을까?
상속받으면 같은 몸처럼 인식되기 때문에 public처럼 접근이 가능하지만,
외부 클래스까지 모두 접근하게 하고 싶지 않을 때,
즉 “자식은 써도 되지만 남은 보지 마라” 라는 의도로 protected 키워드가 도입되었다.
protected는 “상속을 고려하되, 무분별한 외부 노출을 막기 위한 절충형 접근 제어자”다.
Collection API
https://docs.oracle.com/javase/8/docs/api/ <- Collection API 모음 사이트
java.util 이 다른 것들에 비해 인터페이스가 훨씬 많다.
Collection (가장 원시적인)
Collection을 이용한 정렬(sort)
public class SortTest2 {
public static void main(String[] args) {
List<Employee> list = new ArrayList<>();
list.add(new Employee("AAA", 10000.0, 111));
list.add(new Employee("BBB", 20000.0, 222));
list.add(new Employee("CCC", 30000.0, 333));
list.add(new Employee("DDD", 40000.0, 444));
//Collection은 toString()함수가 기본적으로 오버라이딩 되어있다.
System.out.println(list);
//오름차순 정렬
Collections.sort(list, new Comparator<Employee>() {
@Override
public int compare(Employee o1, Employee o2) {
return o1.getEmpNo() - o2.getEmpNo();
}
});
//내림차순 정렬
Collections.sort(list, new Comparator<Employee>() {
@Override
public int compare(Employee o1, Employee o2) {
return o2.getEmpNo() - o1.getEmpNo();
}
});
}
}
Comparator는 인터페이스다. 하지만 지금 객체생성 키워드인 new를 쓰는 것을 볼 수 있다. 이는 어떻게 가능할까
new [[anonymous Inner class] implements] Comparator<Employee>() { ...}
-> 여기서 이름이 없는 클래스가 호출이 되었다. (여기서만 쓰이기 때문에 이렇게 사용됨)
-> 인터페이스 선언과 동시에 함수가 오버라이딩 되면서 호출 된 것이다.
'KOSA FullStack 교육 > java' 카테고리의 다른 글
KOSA fullstack 교육 (Collection API 심화, 예외처리) (0) | 2025.04.30 |
---|---|
KOSA fullstack 교육(Collection API) (0) | 2025.04.29 |
KOSA fullStack 교육(인터페이스 사용 용도, Abstract Class, Collection API) (0) | 2025.04.25 |
KOSA fullStack 교육(static, interface, abstract class) (0) | 2025.04.24 |
KOSA fullStack 교육(상속) (0) | 2025.04.23 |