본문 바로가기
언어공부/JAVA&SPRING

[패스트캠퍼스 수강 후기] 자바 인강 100% 환급 챌린지 17회차 미션

by hobbiz 2020. 8. 26.
반응형

 

오늘은 TreeMap클래스와 내부클래스에 대해 공부해보았다.

 

TreeMap 클래스는

 

key 객체를 정렬하여 key-value를 pair로 관리하는 클래스이다.

 

key에 사용되는 클래스에 Comparable, Comparator 인터페이스를 구현한다.

 

java에 많은 클래스들은 이미 Comparable이 구현되어있다. 구현된 클래스를 key로 사용하는 경우는 구현할 필요 없다.

 

 

 

아래는 HashMap을 만드는 과정.

 

아래는 TreeMap으로 변환한 것.

정렬이 잘 되는 것을 볼 수 있다.

 

Map 인터페이스는

쌍으로 이루어진 객체를 관리하는데 필요한 여러 메서드가 선언되어 있으며

Map을 사용하는 객체는 key-value 쌍으로 되어있고 key 는 중복될 수 없다.

 

 

 

내부 클래스란

 

클래스 내부에 구현된 클래스(중첩된 클래스)이다.

 

클래스 내부에서 사용하기 위해 선언하고 구현하는 클래스이다.

 

주로 외부 클래스 생성자에서 내부 클래스를 생성한다.

 

 

아래는 내부 클래스 유형에 대한설명이다.

 

특히 익명 내부 클래스를 많이 사용한다.  (안드로이드 시스템)

 

 

<추가공부>

자바(java) - 내부 클래스(Inner class)

- 내부 클래스(Inner class)는 클래스 내의 클래스가 선언된 형태를 말합니다. 클래스 내의 클래스를 선언하는 이유는 두 클래스가 긴밀한 관계가 있기 때문입니다.

- 내부 클래스에서 외부 클래스를 쉽게 접근할 수 있습니다.

- 코드 복잡성을 줄일 수 있습니다.

- 외부에 넘겨지지 않을 데이터를 보여줄 때 사용합니다. (ex. hash값을 구현할 때, 내부 클래스를 이용해서 구현합니다.)

- 하지만 클래스 내의 클래스가 존재하기 때문에 가독성이 상당히 떨어집니다.(이 부분 때문에 대부분 extends나 implements를 이용해서 구현합니다.)

* 코드 문법

// 일반적인 class 형태 class A{ // A의 내부 내용 } class B{ // B의 내부 내용 }

// inner 클래스 사용 A: 외부 클래스, B: 내부 클래스 class A{ // 내부 내용 class B{ // 내부 내용 } }

* 내부 클래스(Inner class)

- 변수의 선언위치에 따른 종류와 같습니다.

내부 클래스

특징

인스턴스 클래스(instance class)

외부 클래스의 멤버변수 선언위치에 선언하며, 외부 클래스의 인스턴스멤버처럼 다루어집니다. 주로 외부 클래스의 인스턴스멤버들과 관련된 작업에 사용될 목적으로 선언됩니다.

스태틱 클래스(static class)

외부 클래스의 멤버변수 선언위치에 선언하며, 외부 클래스의 static멤버처럼 다루어집니다. 주로 외부 클래스의 static멤버, 특히 static메서드에서 사용될 목적으로 선언됩니다.

지역 클래스(local class)

외부 클래스의 메서드나 초기화블럭 안에 선언하며, 선언된 영역 내부에서만 사용될 수 있습니다.

익명 클래스(anonymous class)

클래스의 선언과 객체의 생성을 동시에 하는 이름없는 클래스(일회용)

class Outer{ int iv = 0; //인스턴스 변수 static int cv = 0; // 스태틱 변수 void myMethod() { int iv = 0;//지역변수 } }

class Outer{ class InstanceInner(){} // 인스턴스 클래스(instance class) static class StaticInner(){} // 스태틱 클래스(static class) void myMethod(){ class LocalInner(){} // 지역 클래스(local class) } }

몇 가지 예제를 살펴보겠습니다.

예제 1) Outer 클래스 내의 Inner 클래스 선언

package nestedClass; class Outer{ int value = 10; class Inner{ int value = 20; void method1() { int value =30; System.out.println(" value : " + value); System.out.println(" this.value : "+this.value); System.out.println("Outer.this.value : "+Outer.this.value); } } } public class innnerClassEx { public static void main(String[] args) { Outer outer = new Outer(); Outer.Inner inner = outer.new Inner(); inner.method1(); } }

예제 2) 내부 클래스(Inner Class)의 제어자와 접근성 예제

package practice; class value{ class InstanceInner{ int iv = 100; final static int CONST = 100; // instance 클래스에서는 static 변수가 올 수 없습니다. } static class StaticInner{ int iv = 200; static int cv = 200; // static 클래스 내의 static 변수 사용 가능합니다. } void myMethod() { class LocalInner{ int iv = 300; final static int CONST = 300; } } public static void main(String[] args) { System.out.println(InstanceInner.CONST); System.out.println(StaticInner.cv); } }

 

출처: https://fastcampus.co.kr/courses/200748/

 

패스트캠퍼스 강의:

https://bit.ly/3ilMbIO

 

Java 웹 개발 마스터 올인원 패키지 Online. | 패스트캠퍼스

자바 기초문법부터 프로젝트 실습까지 Java 문법부터 스프링/스프링부트, 트렌디한 기술인 JPA까지 모두 배우는 온라인 강의입니다.

www.fastcampus.co.kr

 

 

반응형

댓글