□ 내부클래스(inner) : 클래스 안에 또 다른 클래스를 선언하는 것으로 이렇게 하면 두 클래스의 멤버에 쉽게 접근 가능
예제1) 클래스 파일 생성 및 내부클래스, Static클래스 지정
package person_test;
public class Outer_Class {
//클래스 속성지정
int num = 10;
String str1 = "java";
//static 을 활용하여 어디서나 공유가능한 속성
static String str11 = "world";
//생성자
public Outer_Class() {
System.out.println("최초 생성자");
}
//내부 클래스 생성
class InnerClass{
//내부클래스 속성 지정
int num = 100;
String str2 = "str1";
//내부클래스 생성자
public InnerClass(){
System.out.println("내부클래스 생성자");
}
}
//static을 활용하여 언제든지 공유가능한 클래스 생성
static class SInnerClass{
//속성 지정
int num = 1000;
String str3 = str11;
//생성자
public SInnerClass() {
System.out.println("Static 클래스 생성자");
}
}
}
예제1-1) 객체 생성 및 내부클래스, Static클래스의 속성/메서드 활용
package person_test;
public class Outer_Class_Main {
public static void main(String[] args) {
//객체 생성 및 클래스에서 지정한 속성을 활용하여 객체 속성으로 출력
Outer_Class oc = new Outer_Class();
System.out.println("oc.num :" + oc.num );
System.out.println("oc.str1 : "+ oc.str1 );
//클래스 생성시 정의한 내부클래스 활용하여 객체 생성
Outer_Class.InnerClass in = oc.new InnerClass();
System.out.println("in.num : " + in.num);
System.out.println("in.str2 : " + in.str2);
//클래스 생성시 Static을 활용하여 어디서든 공유가능한 클래스를 활용하여 객체생성
Outer_Class.SInnerClass s1 = new Outer_Class.SInnerClass();
System.out.println("in.num : " + s1.num);
System.out.println("in.str3 : " + s1.str3);
}
}
□ 익명클래스(anonymous) : 이름이 없는 클래스로 주로 메서드를 재정의 하는 목적으로 사용됨
예제2) 클래스 파일 생성 및 메서드 지정
package person_test;
public class AnonymouseClass {
//생성자 생성
public AnonymouseClass() {
System.out.println("나는 생성자");
}
//메서드 지정
public void method() {
System.out.println("익명클래스 메서드");
}
}
예제2-1) 익명 객체생성 및 override활용하여 메서드 호출
package person_test;
public class AnonymouseClass_Main {
public static void main(String[] args) {
//익명객체 생성
new AnonymouseClass() {
//Override활용하여 메서드 호출
@Override
public void method() {
System.out.println("익명클래스 메서드");
};
}.method(); //메서드호출{}.메서드명();
}
}
'Java > Java_basic' 카테고리의 다른 글
Step19. 추상 클래스(abstract) (0) | 2023.09.26 |
---|---|
Step18. 인터페이스(Interface) (0) | 2023.09.25 |
Step16. 오버라이드(Override)와 Super 클래스 (2) | 2023.09.25 |
Step15. 상속과 Private 접근자 (0) | 2023.09.25 |
Step14. 데이터은닉과 Getter/Setter (0) | 2023.09.24 |