김갱환
맨땅에 코딩
김갱환
전체 방문자
오늘
어제
  • 분류 전체보기 (239)
    • ⁂ 맨땅에 코딩 (11)
      • : Story (3)
      • : MiniProject 'MyWeb' (1)
      • : Final Project (5)
      • : Josa-Moa 한국어 조사 처리 프로젝트 (1)
    • —————Frontend——————————————.. (0)
    • ⁂ HTML (10)
      • : 기본 익히기 (10)
    • ⁂ CSS (15)
      • : 기본 익히기 (15)
    • ⁂ Java Script (32)
      • : 기본 익히기 (28)
      • : 자바스크립트 라이브러리 (1)
      • : 연습 문제 (3)
    • ⁂ jQuery (11)
      • : 기본 익히기 (11)
    • ⁂ Bootstrap (3)
      • : 기본 익히기 (3)
    • ⁂ TailWind CSS (1)
    • ⁂ AJAX (5)
      • : 기본 익히기 (5)
    • ⁂ Vue.js (3)
      • : 기본 익히기 (3)
    • —————DB : Data Base————————.. (0)
    • ⁂ Oracle DB (27)
      • : 기본 익히기 (24)
      • : 연습 문제 (3)
    • ⁂ MyBatis Framework (15)
      • : 기본 익히기 (15)
    • —————Backend———————————————.. (0)
    • ⁂ Java (62)
      • : 기본 익히기 (42)
      • : JDBC - Java DataBase Conn.. (4)
      • : Crawling (2)
      • : 독학으로 공부하기(과거) (11)
      • : 연습문제 (3)
    • ——————Web————————————————— (0)
    • ⁂ JSP (28)
      • : 기본 익히기 (28)
    • ⁂ Spring FrameWork (15)
      • : Legacy Project (1)
      • : 기본 익히기(Boot 기반) (14)
    • ——————————————————————— (0)
    • ⁂ Error Note (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 비트연산자 #코딩공부 #자바공부 #코딩 #자바 #프로그래밍 #개발자
  • 코딩공부 #자바공부
  • 객체지향프로그래밍
  • 코딩
  • 코딩공부 #코딩 #자바 #자바독학 #자바공부 #개발자 #프론트앤드 #백앤드 #풀스택
  • 개발자
  • httperror
  • 프론트앤드
  • 코딩 #코딩공부 #상수 #리터럴 #형변환 #개발자 #자바 #자바공부 #자바독학
  • 자바공부
  • http에러메세지
  • 코딩공부
  • 연산자 #기본연산자 #코딩 #자바 #독학 #자바공부 #자바연산자
  • web.xml수정
  • 코딩 #코딩공부 #프론트앤드 #백앤드 #풀스택개발자
  • 자바
  • 백앤드
  • 풀스택
  • ErrorPage
  • HTML공부

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김갱환

맨땅에 코딩

⁂ Java/: 기본 익히기

[JAVA] #8-6 이너 클래스(Inner Class)

2022. 9. 15. 18:05

1. 이너 클래스란?

 

 이너 클래스란 클래스 내부에서 선언된 클래스를 말한다.

 주로 웹페이지를 작성할 때 사용되는 언어(.jsp / .py / .asp / .php)에서 사용된다.

 

 방식은 간단하다.

 class 안에 class를 한번 더 선언하고 기본적인 class를 생성하는 것과 동일하게 inner class를 생성하면 된다.

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
	
} // class end

 inner class를 선언하는 방법은 따로 기술하진 않겠다.

 inner class를 어떻게 접근해야하는가가 더 중요한 것이기에 그것에 대해 알아가보자.

 

 

2. 이너 클래스에 접근하는 방법

 

 이너 클래스에 접근하는 방법은 간단하다.

 main()에서 클래스에 접근하듯 상위 클래스 안에 이너 클래스의 새로운 인스턴스를 만들고 접근하면 된다.

class WebProgram {

	...
	
	public void print() {
		Language lang = new Language();
		lang.display();
		
		Smart sm = new Smart();
		sm.display();
	} // print() end
	
} // class end

 

 이제 메인에서 WebProgram 클래스의 print() 메서드에 접근하면 정상적으로 출력되는 것을 확인할 수 있다.

public class Test09_inner {

	public static void main(String[] args) {

		WebProgram web = new WebProgram();
		web.print();
		
	} // main() end
} // class end

출력 화면

 

 

 그런데 여기서 잠깐!

 이상하게 main() 안에서 이너클래스인 Language와 Smart가 잡힌다.

 

 그렇다고 직접 접근을 하면 에러가 난다.

Language lang = new Language(); // 에러
Smart sm = new Smart(); // 에러

 

 만약 직접적으로 접근을 하고 싶다면 단계적으로 접근을 하면 된다.

 위의 사진을 보면 알 수 있다시피 Language와 Smart는 oop0915의 상위 주소에 속해있는 것이 아니라 oop0915.WebProgram이라는 상위 주소를 갖고 있기 때문이다.

 

Language lang = new WebProgram().new Language();
lang.display();

Smart sm = new WebProgram().new Smart();
sm.display();

성공적으로 출력이 되었다.

 

 이렇게 클래스 안에 클래스를 만들어서 사용하는 것도 가능하다.

 

 

* (참고) 안드로이드 어플을 개발할 때 자주 쓰이는 이너클래스 소개 *

 안드로이드 어플을 개발한다면 R이라는 클래스를 자주 만나게 될 것이다.

 이 R에는 여러 기능들이 들어있기 때문이다.

 그래서 R이란 클래스 안에 필요한 클래스를 또 만들어서 접근을 한다.

class R {
    class id{
        String btn="버튼";
    }
}

접근방식 R.id.btn
저작자표시 비영리 동일조건 (새창열림)

'⁂ Java > : 기본 익히기' 카테고리의 다른 글

[JAVA] #9-2 예외처리(Exception) 2 - throws  (0) 2022.09.16
[JAVA] #9-1 예외처리(Exception) 1 - try...catch...finally  (0) 2022.09.16
[JAVA] #8-5 익명 내부 객체(Anonymous class)  (0) 2022.09.15
[JAVA] #8-4 인터페이스(Interface)  (0) 2022.09.15
[JAVA] #8-3 추상(Abstract)  (0) 2022.09.15
    '⁂ Java/: 기본 익히기' 카테고리의 다른 글
    • [JAVA] #9-2 예외처리(Exception) 2 - throws
    • [JAVA] #9-1 예외처리(Exception) 1 - try...catch...finally
    • [JAVA] #8-5 익명 내부 객체(Anonymous class)
    • [JAVA] #8-4 인터페이스(Interface)
    김갱환
    김갱환
    코딩의 코자도 모르는 이의 공부 기록장

    티스토리툴바