JAVA/기본 이론
JAVA | 지역 내부 클래스(Local Inner Class)
로아다
2023. 4. 1. 21:28
728x90
반응형
지역 내부 클래스
- 클래스는 메서드 내부(Local)에서도 선언할 수 있다.
- 해당 메서드 밖에서는 사용할 수 없는 아주 일시적인 클래스
- 메서드가 끝나면 클래스의 수명도 끝난다.
익명 지역 내부 클래스
- 메서드 내부에서 클래스를 바로 상속받아 사용하는 방식
- 클래스 이름을 지정할 수 없기 때문에 익명 클래스라고 부른다.
import School.ProgrammingStudent;
import School.Student;
public class C13_LocalInnerClass {
public static void main(String[] args) {
Student s = new Student();
// 바로 Student 클래스를 상속받아 마음대로 고쳐버리는 행위
Student s2 = new Student() {
@Override
public int getTotal() {
return 123;
}
@Override
public void info() {
System.out.println("내가 만든 인포");
}
};
// s는 그냥 Student의 인스턴스이므로 Student에 구현된 동작을 한다.
s.info();
s.getTotal();
// s2는 Student를 마음대로 오버라이드한 자식 클래스의 업 캐스팅이기 때문에
// 오버라이드 된 동작을 한다.
s2.info();
s2.getTotal();
// 매개변수로 클래스의 인스턴스를 요구하는 곳에 보낼 수 있는 것
Student s3 = new Student();
print(s3); // 0. 인스턴스가 담긴 변수
print(new Student()); // 1. 그냥 인스턴스
print(new ProgrammingStudent()); // 2. 자식 인스턴스 (다형성)
print(new Student() {
@Override
public void info() {
System.out.println("산대특 바리스타 특별 훈련 과정");
}
}); // 4. 해당 클래스를 오버라이드한 익명 지역 클래스
}
public static void print(Student s) {
s.info();
}
public static int add(int a, int b) {
class Waffle {
int price;
int flavor;
}
System.out.println(new Waffle());
return a + b;
}
}
728x90
반응형