내부 클래스는 클래스 내부에 선언한 클래스를 말한다
.
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();
두 가지 방법 모두 가능하다.
'웹개발 교육 > Java' 카테고리의 다른 글
[36일] Java (43) - throws (0) | 2022.09.16 |
---|---|
[36일] Java (42) - Exception (0) | 2022.09.16 |
[35일] Java (40) - 익명 객체 (0) | 2022.09.15 |
[35일] Java (39) - interface (0) | 2022.09.15 |
[35일] Java (38) - 추상 클래스 (0) | 2022.09.15 |