728x90
내부 클래스란 클래스 안에 선언된 클래스를 말한다.
1) 내부 클래스 : 중첩 클래스 or 인스턴스 클래스
public class Test{
class Cal{
int value = 0;
public void plus(){
value++;
}
}
public static void main(String args[]){
// Test 객체를 생성해야 함
Test t = new Test();
Test.Cal cal = t.new Cal();
cal.plus();
System.out.println(cal.value);
}
}
2) 내부 클래스 : 정적 중첩 클래스 or static 클래스
public class Test2{
static class Cal{
int value = 0;
public void plus(){
value++;
}
}
public static void main(String args[]){
// Test2 객체를 생성할 필요 x
Test2.Cal cal = new Test2.Cal();
cal.plus();
System.out.println(cal.value);
}
}
3) 내부 클래스 : 지역 중첩 클래스 or local 클래스
public class Test3{
public void exec(){
class Cal{
int value = 0;
public void plus(){
value++;
}
}
// 메소드 안에서 클래스 이용(지역 변수처럼)
Cal cal = new Cal();
cal.plus();
System.out.println(cal.value);
}
public static void main(String args[]){
Test3 t = new Test3();
t.exec();
}
}
익명 클래스란 생성자 다음에 중괄호 열고 닫고가 나오면
해당 생성자 이름에 해당하는 클래스를 상속받는 이름없는 객체를 만드는 것을 말한다.
클래스 정의와 동시에 객체를 생성할 수 있다. -> 일회성으로만 사용 가능
// 추상클래스
public abstract class Action{
public abstract void run();
}
// 추상클래스 Action을 상속받은 클래스
public class MyAction extends Action{
public void run(){
System.out.println("달리다");
}
}
// MyAction을 사용하는 클래스
public class Test{
public static void main(String args[]){
Action action = new MyAction();
action.run();
}
}
// MyAction을 사용하지 않고 Action을 상속받는 익명 클래스를 만들어서 사용
public class Test{
public static void main(String args[]){
// 익명 클래스
Action action = new Action(){
public void run(){
System.out.println("달리다");
}
};
action.run();
}
}
728x90
'강의 정리하기 > JAVA' 카테고리의 다른 글
Exception 예외처리(2) (0) | 2023.03.07 |
---|---|
Exception 예외 처리(1) (0) | 2023.03.07 |
클래스 형변환 (0) | 2023.03.05 |
다형성과 오버로딩, 인터페이스 (0) | 2022.01.25 |
인터페이스 (0) | 2022.01.18 |