컴퓨터는 잘못이 없다..

[JAVA]InnerClass3_퀴즈_Inner Class 객체 생성하기 본문

공부/JAVA

[JAVA]InnerClass3_퀴즈_Inner Class 객체 생성하기

도토리까꿍v 2020. 12. 29. 19:46
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 실행결과

안녕! 나는 원숭이야!
안녕! 나는 고양이야!
Comments