웹개발 교육/Java
[35일] Java (41) - 내부 클래스(중첩 클래스)
ewok
2022. 9. 15. 18:11
내부 클래스는 클래스 내부에 선언한 클래스를 말한다
.
package oop0915;
import oop0915.WebProgram.Language;
import oop0915.WebProgram.Smart;
class WebProgram {
String title = "Java Program";
class Language {
String basic = "JAVA, HTML, CSS, JavaScript";
void display() {
System.out.println("기초수업:" + basic);
}//end
}//inner class
class Smart {
String basic = "Objective-C, Java OOP, C#";
void display() {
System.out.println("기초수업:" + basic);
}//end
}//inner class
public void print() {
Language lang = new Language();
lang.display();
Smart sm = new Smart();
sm.display();
}//print() end
}//class end
public class Test09_inner {
public static void main(String[] args) {
// 내부 클래스 inner class
//-> 클래스 내부에서 선언된 클래스
WebProgram web = new WebProgram();
web.print();
//에러. 내부 클래스는 직접 접근할 수 없다
//Language lang = new Language();
//Smart sm = new Smart();
//내부 클래스는 외부에서 단계적으로 접근할 수 있다.
Language lang = new WebProgram().new Language();
lang.display();
Smart sm = new WebProgram().new Smart();
sm.display();
}//main() end
}//class end
WebProgram 클래스에 Language와 Smart 두 개의 클래스를 선언하였다. 이와 같이 클래스 내에 클래스를 선언할 수 있다.
WebProgram 클래스의 print 메소드에 Language와 Smart 객체를 생성하여 각각의 disp 메소드를 호출하도록 하였다.
내부 클래스는 직접 접근이 불가능하다. 대신 외부에서부터 .을 사용하여 단계적으로 접근할 수 있다.
Smart sm = new WebProgram().new Smart();
sm.display();
WebProgram web = new WebProgram();
WebProgram.Smart ws = web.new Smart();
ws.display();
두 가지 방법 모두 가능하다.