📚 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());
		//--==>> 익명의 클래스...
	}
}