📚 Study/Java
JAVA :: Test125_중첩 클래스(Annoymous 클래스)
bono-hye
2023. 9. 16. 12:00
○ Annoymous 클래스 (익명의 클래스 : 무명 클래스)
- AWT나 안드로이드 이벤트 처리에서 일반적으로 사용
- 상위 클래스 메소드를 하나 정도 재정의할 필요성이 있을 때 사용
- 클래스의 객체가 필요하면 또 다시 클래스를 생성해야 하는 번거로움으로 인해 빈번하게 객체 생성이 필요한 경우 익명의 클래스를 생성하여 처리할 수 있다.
○ 형식 및 구조
new 상위 클래스의 생성자()
{
접근제어지시자 자료형 메소드()
{
...;
}
}; ← check~!!! 세미콜론
* Object는 조상 급의 클래스, 상위 객체 없음!
* Object 클래스는 lang 패키지에 포함. lang 패키지 import 구문도 역시 생략되어 있는 상태!
// extends Object 의문. 클래스는 단일 상속만 가능한데 어떻게 상속받아? → Object는 조상급의 클래스! Object의 상위 객체는 없다.
/*
class SuperTest116 // extends Objet → 여기서 Object를 상속받으면
{}
class SubTest116 extends SuerTest116 → SubTest116의 부모 클래스에 Objec도 포함 (SuperTest116이 Object를 상속받았으니까)
*/
// import java.lang.Object;
// import java.lang.*; // 자동으로 삽입되는 import 구문이다.
// Object 클래스는 lang 패키지에 포함되어 있다.
// class public Test115
class TestObj
// extends Object → JAVA의 모든 클래스들은 Object를 상속받음 (명시하지 않더라도 붙어있음)
{
/*
Object 의 멤버들~!!!
...;
public String toString()
{
...;
}
...;
*/
/*
@Override // 기본적으로 Object를 상속받았기 때문에 오버라이딩 가능
public String toString()
{
...;
}
*/
public Object getString()
{
/*
Object ob = new Object();
ob.xx();
ob.yyy();
ob.zzzz();
return ob;
*/
//return new Object(); // 주석처리 한 구문이랑 같은 구문
// ------------ Object 형
return new Object() // 특정한 기능으로 정의하여 가져오겠다도 가능
{
// 특정 메소드 재구성 → 재정의
@Override
public String toString()
{
return "익명의 클래스...";
}
};
}
}
/*===================================================
new Object()가 즉, new Object
new Object는 이름이 부여되지 않았음 → 익명의 클래스
====================================================*/
// import java.lang.*;
public class Test125 // extends Object
{
/*
Object 의 멤버들 상속~!!!
*/
public static void main(String[] args)
{
TestObj ob = new TestObj();
System.out.println(ob.toString());
//--==>> TestObj@15db9742
System.out.println(ob.getString());
//--==>> 익명의 클래스...
}
}