반응형
innerClass
* 내부 클래스가 가장많이 쓰이는곳은 익명의 내부 클래스이다.
* 약간의 편리함, 추상클래스에 자주쓰인다.
public class Emart {
//멤버필드
public String branch="과자";
//방송을 전달하는 메소드
public void broadcast(String msg) {
System.out.println(msg);
}
//청소를 하는 메소드
public void clean() {
System.out.println("청소");
}
* 내부 클래스의 장점은
* 자기를 포함하고 있는 클래스의 필드를 참조하거나 메소드를 쓸 수 있다.
* 하지만 이렇게 내부 클래스를 사용하지 않으면 이러한 메소드들을 다 만들어줘야 한다 필드 메소드 전부.
innerClass(Static)
* 내부클래스 (static)
* 스태틱으로 참조를 하고싶다면 그 메소드 또한 스태틱으로 만들어야 한다.
그래야만 참조가 가능하기 때문이다.
public class Worker{
//내부 클레스 메소드
public void work() {
// 이처럼 외부클래스의 내부클래스에서 선언된 메소드는 외부클래스에 선언된 메소드나 필드명을 참조가 가능하다.
broadcast("허니버터칩을 찾습니다");
clean();
broadcast(branch);
}
}
}
정리
* 지금 누군가가 Car클래스를 만들었는데 그것을 내가 수정할 수 없다.
* 그런데 임포트 해서 써야한다 그런데 내가 드라이브라는 메소드가 마음에 안든다.
* 그런데 상속받아서 오버라이드 하고 다시 만들기에는 매우 번거로운 작업이다.
* 그럴때 하는 것이 바로 내부클래스 하지만 이것보다 한걸음 더 나아가는 방식이
* 익명의 클래스이다.
-클래스를 선언과 객체의 생성을 동시에 하는 이름없는 클래스(일회용)
public class Factory {public Car car = new Car() {
//new Car -> extends Car로 생각하면된다.
// 해당 타입의 메소드를 호출해 오버라이드 한다.
// 이런식으로 하게되면 굳이 내부클래스를 안만들어도 되는 형식이.
@Overridepublic void drive() {
System.out.println("빨리 달려");
}
}
//public Car car = new Car();
//멤버 필드에 있는 Car 객체를 사용하는 메소드
public void useCar() {
car.drive();
}
public Car getCar() {
return car;
}
}
반응형
'언어 공부 > JAVA' 카테고리의 다른 글
Java의 5대 핵심 개념과 예시로 알아보는 자바 프로그래밍 (0) | 2023.11.24 |
---|---|
JAVA/DTO test code (0) | 2022.05.15 |
JAVA/상속관계, 포함관계 (0) | 2022.05.15 |
JAVA/CLASS (0) | 2022.05.11 |
JAVA/생성자 (0) | 2022.05.11 |
최근댓글