로컬 내부 클래스의 정의
외부 클래스의 메서드 내에서 정의된 클래스
MyOuter.test()을 호출해서 아래와 같이 출력이 되도록 main() 메서드 작성
'고객정보 : 이름 : 홍길동, 나이 : 20, 주소 : 세종시 세종구'
package chapter20230830;
class MyOuter{
private String name; // private MyOuter클래스 안에서만 사용가능
private int age;
public MyOuter(String name, int age){ // 클래스MyOuter 매개변수String name, int age을 받는 생성자 생성
this.name = name; // this.name - private String name 뜻 하고 = name 매개변수 name를 뜻함
this.age = age; // 위와 동일
}
public String getName() { // name을 호출하기 위해 getname
return name;
}
public int getAge() { // 위와 동일
return age;
}
public void test(String address){ // 매개변수를 받는 메서드 생성
int num = 4;
class Inner { // 외부클래스의 메서드 내에서 정의된 클래스
private String address; // Inner클래스 안에서만 사용가능함
public Inner(String address) { // 매개변수를 받는 클래Inner생성자 생성
this.address = address;
}
public String getCustomerInfo() { // 메서드 생성
System.out.println("inner_test() : " + num);
return "이름 : " + name + ", 나이 : " + age + ", 주소 : " + address; // 메서드 호출시 정보를 리턴함
}
}// end Inner_class
Inner inner = new Inner(address); // Inner안에 address를 Inner타입을 갖는 inner에 넣어줌
System.out.println("고객정보: " + inner.getCustomerInfo()); // inner 안에 Inner이 있기 때문에 그 안에 getCustomerInfo 호출
} //end inner_test;
}//end Outer_class;
public class test02 {
public static void main(String[] args) {
MyOuter outer = new MyOuter("홍길동", 20); // MyOuter의 매개변수에 "홍길동", 20 넣고 그걸 MyOuter타입의 outer에 넣어줌
outer.test("세종시 세종구"); // test(Stirng) 매개변수를 받기때문에 String를 넣어줌
}
}