Notice
Recent Posts
Recent Comments
Link
컴퓨터는 잘못이 없다..
[JAVA]InnerClass3_퀴즈_Inner Class 객체 생성하기 본문
Contents
접기
[퀴즈]
MainClass01.java를 생성해서
Zoo 클래스에 있는 getMonkey() 메소드를 호출해서
리턴되는 참조값을 m1이라는 지역변수에 담아보세요.
그리고 getCat()함수의 return값을 c라는 지역변수에 담아보세요.
Zoo.java
package test.mypac;
public class Zoo {
//내부 클래스 type을 리턴하는 메소드
public Monkey getMonkey() {
return new Monkey();
}
//내부 클래스 type을 리턴하는 메소드
public Cat getCat() {
return new Cat();
}
//내부 클래스
public class Monkey{
public void say() {
System.out.println("안녕! 나는 원숭이야!");
}
}
//내부 클래스
public class Cat{
public void say() {
System.out.println("안녕! 나는 고양이야!");
}
}
}
[퀴즈 답]
┌MainClass01.java
package test.main;
import test.mypac.*;
import test.mypac.Zoo.Cat;
import test.mypac.Zoo.Monkey; //Zoo 클래스의 내부 클래스 Monkey import
import test.mypac.MyUtil.User;
public class MainClass01 {
/*여기는 inner class영역*/
public static void main(String[] args) {
/*여기는 local inner class영역*/
/*
Zoo 클래스에 있는 getMonkey() 메소드를 호출해서
리턴되는 참조값을 m1이라는 지역변수에 담아보세요.
*/
Zoo z1 = new Zoo();
Monkey m1 = z1.getMonkey(); //패키지명.*로 import 했다 하더라도 별도로 패키지명.Zoo.Monkey를 import 해주어야 에러가 나지 않는다.
m1.say();
//이런 모양도 있다.
Cat c = new Zoo().getCat(); //getCat()함수의 return값을 Cat c에 대입
c.say();
}
}
▲패키지명.*로 import했다 하더라도 별도로 패키지명.zoo.InnerClass명으로 import를 해주어야 한다.
▲내부클래스를 감싸고 있는 Zoo클래스로 객체를 생성한 후 객체명.내부클래스의메소드명을 통해 InnerClass의 메소드에 접근가능하다.
┌MainClass01.java 실행결과
안녕! 나는 원숭이야!
안녕! 나는 고양이야!
'공부 > JAVA' 카테고리의 다른 글
[JAVA]변수와 자료형 (1) | 2024.04.07 |
---|---|
[JAVA]InnerClass2_Inner Class에서 this의 사용 (0) | 2020.12.29 |
[JAVA]InnerClass1_클래스와 메소드 내에 정의할 수 있는 멤버 (0) | 2020.12.29 |
Comments