본문 바로가기

프로그래밍언어/Java

(71)
[Java 중급] 내부 클래스 내부 클래스내부 클래스는 바깥 클래스의 인스턴스를 이루는 요소가 된다. 즉, 바깥 클래스의 인스턴스에 소속된다.  public class InnerOuter { private static int outClassValue = 3; private int outInstanceValue = 2; class Inner { private int innerInstanceValue = 1; public void print() { // 자기 자신의 인스턴스 변수에 접근 System.out.println(innerInstanceValue); // 외부 클래스의 인스턴스 멤버..
[Java 중급] 정적 중첩 클래스의 활용 정적 중첩 클래스의 활용정적 중첩 클래스로 리팩토링 전 NetworkMessage.java// Network 객체 안에서만 사용public class NetworkMessage { private String content; public NetworkMessage(String content) { this.content = content; } public void print() { System.out.println(content); }} Network.javapublic class Network { public void sendMessage(String text) { NetworkMessage networkMessage = new Netw..
[Java 중급] 정적 중첩 클래스 정적 중첩 클래스public class NestedOuter { private static int outClassValue = 3; private int outInstanceValue = 2; static class Nested { private int nestedInstanceValue = 1; public void print() { // 자신의 멤버에 접근 System.out.println(nestedInstanceValue); // 바깥 클래스의 인스턴스 멤버에 접근 //System.out.println(outInstanceValu..
[Java 중급] 중첩 클래스, 내부 클래스 중첩 클래스, 내부 클래스란?클래스 안에 클래스를 중첩해서 정의할 수 있는데, 이를 중첩 클래스(Nested Class) 라 한다.  class Outer { ... class Nested{ ... }}  중첩 클래스의 분류정적 중첩 클래스내부 클래스내부 클래스지역 클래스익명 클래스=> 중첩 클래스와 내부 클래스로 분류한다. 둘의 차이는 무엇일까?중첩은 나의 안에 있지만 내 것이 아닌 것을 말한다. 단순히 위치만 안에 있는 것이다. 반면 내부는 나의 내부에서 나를 구성하는 요소이다 .여기서 중첩(Nested)과 내부(Inner)를 분류하는 핵심은 바깥 클래스의 입장에서 볼 때 안에 있는 클래스가 나의 인스턴스에 소속이 되는가 되지 않는가의 차이이다. 정적 중첩 클래스는 바깥 클래스와 ..
[Java 중급] 열거형 - Enum Type 열거형 - Enum Type자바는 타입 안전 열거형 패턴을 편리하게 사용할 수 있다록 열거형(Enum Type)을 제공한다. 열거형을 정의할 때는 class 대신 enum을 사용한다 .원하는 상수의 이름을 나열하면 된다. public enum Grade { BASIC, GOLD, DIAMOND} => 이전 포스팅에서 작성한 Grade 클래스와 동일한 역할은 하는데, 코드 작성은 훨씬 줄어들었다.   Enum 특징열거형도 클래스이다. 열거형은 자동으로 java.lang.Enum을 상속 받는다. 외부에서 임의로 생성할 수 없다.   * 인프런 '김영한의 실전 자바 - 중급 1편'을 참고하여 작성하였습니다.
[Java 중급] 타입 안전 열거형 패턴 타입 안전 열거형 패턴앞선 포스팅의 문제를 해결하기 위해 나온 것이 바로 타입 안전 열거형 패턴이다. 여기서 enum은 열거를 뜻하는 enumeration의 줄임말이다. 여기서 중요한 것은 타입 안전 열거형 패턴을 사용하면 나열한 항목만 사용할 수 있다는 것이다.  public class ClassGrade { public static final ClassGrade BASIC = new ClassGrade(); public static final ClassGrade GOLD = new ClassGrade(); public static final ClassGrade DIAMOND = new ClassGrade();} public class ClassRegMain { public sta..
[Java 중급] 열거형 - ENUM 문자열과 타입 안정성자바가 제공하는 열거형(Enum Type)을 이해하기 위해서 예제를 먼저 살펴보자.   예제비즈니스 요구사항고객은 3등급으로 나누고 , 상품 구매시 등급별로 할인을 적용한다. package enumeration.ex0;public class DiscountService { public int discount(String grade, int price) { int discountPercent =0; if(grade.equals("BASIC")) { discountPercent = 10; } else if(grade.equals("GOLD")) { discountPercent = 20;..
[Java 중급] Class 클래스 Class 클래스클래스의 정보(메타데이터)를 다루는데 사용. 실행 중인 자바 애플리케이션 내에서 필요한 클래스의 속성과 메서드에 대한 정보를 조회하고 조작할 수 있다. 클래스의 이름, 슈퍼클래스, 인터페이스, 접근제한자 등과 같은 정보 조회리플렉션: 클래스에 정의된 메서드, 필드, 생성자 등을 조회동적 로딩과 생성: Class.forName() 메서드를 사용하여 클래스를 동적으로 로드하고, 새로운 인스턴스를 생성할 수 있다. 어노테이션 처리 package lang.clazz;import java.lang.reflect.Field;import java.lang.reflect.Method;public class ClassMetaMain { public static void main(String[] ar..