(혼) (공) (자)
익명클래스
만석이
2024. 1. 22. 18:16
1. 다른 내부 클래스와는 달리 이름이 없는 클래스이다.
2. 익명 클래스는 클래스의 선언과 객체의 생성을 동시에 하므로 한 번만 사용할수있다.
3. 오직 하나의 객체만을 생성할수 있는 일회용 클래스
4. 따라서 생성자를 선언할 수도 없으며, 둘 이상의 인터페이스를 구현할수도 없다.
5.인터페이스의 기능을 구현할때 사용한다.
6.인터페이스를 클래스를 직접 생성하여 구현하는것이 아니라 익명클래스로 선언하여 기능을 직접 구현할수있다.
바로 예시를 보자
package Ex2_anoymous_class;
abstract public class Person { public abstract void myself(); } |
person클래스는 추상메서드를 만들어주었다.
|
package Ex2_anoymous_class;
public class Student extends Person { @Override public void myself() { System.out.println("저는 학생입니다."); } } |
Student 클래스는 person 클래스를 상속받고
추상메서드를 이어받아 myself메서드를 정의해주었다. |
package Ex2_anoymous_class;
public class PersonMain { public static void main(String[] args) { //person클래스를 확장하기위해서 자식클래스를 만들어서 사용 Person p = new Student(); p.myself(); //Person을 상속받아 처리하는 클래스가 또 필요하지만 //한번만 사용할거라면 굳이 자식클래스를 만들어서 사용할 필요없다. Person p2 =new Person() { @Override public void myself() { System.out.println("저는 직장인입니다."); } }; p2.myself(); } } |
PersonMain를 중요하게 봐야한다.
일반 클래스 객체생성 Person p = new Student(); p.myself(); 익명클래스 Person p2 =new Person() { @Override public void myself() { System.out.println("저는 직장인입니다."); } }; p2.myself(); } } 객체생성이 끝날때 ' ; ' (세미콜론)을 붙여주지 않고 바로 중괄호를 붙여주며 myself() 메서드에 접근하여 오버라이딩하는것을 볼수있다. |