2022-05-18(Java_Collection)

이상수·2022년 5월 19일
0

TIL Java/Git/etc

목록 보기
15/17
post-thumbnail
  1. 시작하게 된 계기 및 다짐 😮
  • 이번 코드스테이츠의 백엔드 엔지니어링 개발자 부트캠프에 참여하게 되면서 현직개발자 분들의 빠른 성장을 위한 조언 중 자신만의 블로그를 이용하여 배운 것 들을 정리하는게 많은 도움이 된다 하여 시작하게 되었다.

    • 그 날 배웠던 것을 길지 않아도 좋으니 정리하며 복습하는 습관 기르기
    • 주말에 다음주에 배울 내용들을 예습
    • 코딩 문제와 java코드들은 꾸준히 학습
  1. 학습 목표 😮
목표결과
내부 클래스의 개념 이해 및 유형에 따른 선언위치O
각 내부 클래스 이해 및 정의/사용O
  1. 정리

내부 클래스


내부 클래스
 - 외부 클래스와 내부 클래스가 서로 연관되어 있을 때 사용
 - InClass inclass (자료형 , 변수)
 
1. 인스턴스 내부 클래스 - 외부 클래스의 멤버변수 위치에 선언
 - 클래스 생성과 상관없이 사용할 수 있는 정적 변수와 정적 메서드는 인스턴스 내부 클래스에서 선언 불가
   ==> 외부 인스턴스 변수, 외부 전역변수(외부에 static 키워드가 붙은 메서드,변수 제외)

2. 정적 내부 클래스 - 외부 클래스의 멤버변수 위치에 선언 
   ==> 외부 전역 변수 사용(외부 클래스의 static 키워드가 붙은 메서드,변수)

3. 지역 내부 클래스 - 외부 클래스의 메서드, 초기화 블럭안에 선언(정적 클래스로 사용 불가__메서드 호출시에 생성되기 때문에)
  ==> 외부 인스턴스 변수, 외부 전역변수

4. 익명 내부 클래스 - 일회용 익명 클래스( 클래스 선언과 객체 생성을 동시에 하기 때문에)
  ==> 외부 클래스의 final 변수와 익명클래스 메서드와 변수만 사용가능
  ==> 인스턴스 옆에 {}로 블럭이 있음



Instance/static 클래스_Code


Instance

Class Outer{
	private InClass inclass;
    int num=5;
    class InClass{
    	int inNum;
        
        void Test(){}
        System.out.println(num);
    }
    
    public void Show(){
    	inclass.Test();
    }
}

Outer outer = new Outer();
outer.Show();

or

Outer.InClass inclass = outer.new Inclass();

======================================

Static

Class Outer{
	int num =5;
    static int num2 = 10;
    
    static class StaticInClass{
    	static void test(){
        	num사용 불가/
            num2 사용 가능
        }
    }
}

Outer outer = new Outer();
outer.test();



Local/anonymous_Code


Local

Class Outer{
	int num=5;
    
    void test(){
    	int num2 = 6;
        class LocalInClass{
        	void show(){
            num 사용 가능/
            num2 사용 가능
            }
        }
        LocalInClass local = new LocalInClass();
        local.show();
    }
}

Outer outer = new Outer();
outer.test();

====================================

anonymous

Interface Anonymous{  // Interface도 가능
	public static int num = 5;
    void show();
}

Anonymous anonymous = new Anonymous(){
	public void show(){
    	System.out.println(num);
    }
}

anonymous.show();






  1. 피드백 😮
  • 클래스 내에 생성되는 내부 클래스를 배웠는데 각 인스턴스/정적 클래스와 익명/로컬 클래스로 작게 구분하여 볼수 있다.

  • 인스턴스/정적 클래스는 외부 클래스 내에 정의하는 내부 클래스로 static의 경우 해당 내부 클래스 정의없이 접근이 가능하고 인스턴스 클래스의 경우 객체 생성이 필요하다.

  • 로컬/익명 클래스는 로컬의 경우 외부클래스의 메서드 내에서만 정의가 가능하고 이 메서드를 호출하였을때 사용이 가능하다. 익명 클래스의 경우 일회용으로 사용할 때 사용하는 클래스로 알면 쉽다.

  1. 앞으로 해야 될 것 😮
  • 매일 꾸준히 할 것
    • 꾸준히 velog 작성
    • Java 언어 및 Algorithm 공부(Coding-Test)
    • 틈틈히 운동 하기

  • 내일 해야 할 것
    • Java_심화 과정 마지막 단계 공부
    • 열거형/에너테이션/람다/스트림등 자바를 좀더 깊이 들어가서 사용하는 여러 메서드들 공부
profile
Will be great Backend-developer

0개의 댓글