내부 클래스
코드의 복잡성과 가독성을 높이기 위하여 사용한다.
장점
작성하는 데 더 적은 코드가 요구된다.
클래스 내부에 존재하기 때문에 가독성이 있고 유지 보수 가능한 개발 가능
외부 클래스의 모든 멤버에 접근할 수 있다는 장점
/*
InnerClass.java
OuterClass - TestInnerClass
InnerClass - Inner
내부클래스: 코드의 복잡성과 가독성을 높이기 위하여 사용한다.
외부클래스의 멤버에 쉽게 접근 가능하다는 장점을 가지고 있다.
*/
public class InnerClass {
//Outer Class의 Value
String outer_value = "Hello" ;
//Outer Class의 Method
public void outMethod () {
System . out . println ( "OuterMethod" );
}
//Inner Class 선언
public class Inner {
//Inner Class의 Value
String inner_value = "World" ;
//Inner Class의 Method
public void innerMethdod () {
System . out . println ( "InnerMethod" );
}
}
public static void main ( String [] args ) {
//OuterClass 선언 및 객체화
InnerClass outer = new InnerClass ();
//InnerClass는 OuterClass.new InnerClass()로서 객체화 하여 사용
Inner inner = outer . new Inner ();
outer . outMethod ();
inner . innerMethdod ();
System . out . println ( outer . outer_value + inner . inner_value );
/*
OuterMethod
InnerMethod
HelloWorld
*/
}
}
익명 클래스
클래스의 선언과 객체의 생성이 동시에 되는 클래스 이다. 1개의 객체만을 생성하고 1번만 사용되는 특징을 가지고 있다.
클래스를 새로 하나 구현하는 것이 큰 비용(Time, Memory)이 소모 될때 쓴다.
Format: “ClassName” ObjectName = new “ClassName”(){Member Field};
내부 익명 클래스
추상 클래스인 경우 바로 객체로 선언할 수 없다. 내부 클래스 + 익명 클래스를 활용한 내부익명 클래스 선언=>추상 클래스를 바로 객체화 하여 사용할 수 있다.
/*
Person.java
Abstract 선언
*/
abstract class Person {
abstract void Name ();
abstract void Age ();
}
/*
AnonymousClass.java
내부 익명 클래스 구현
*/
public class AnonymousClass {
public static void main ( String [] args ) {
//익명 클래스 구현 Interface이므로 Method를 Override하여 구현해야 한다.
Person Hwang = new Person () {
@Override
public void Name () {
System . out . println ( "황정용" );
}
@Override
public void Age () {
System . out . println ( "26" );
}
};
Hwang . Name ();
Hwang . Age ();
/*추상 클래스인 경우 바로 객체로 선언할 수 없다.
내부 클래스 + 익명 클래스를 활용한 내부익명 클래스 선언
=>추상 클래스를 바로 객체화 하여 사용할 수 있다.
*/
}
}
참조: 원본코드
코드에 문제가 있거나 궁금한 점이 있으면 wjddyd66@naver.com으로 Mail을 남겨주세요.
Leave a comment