치킨을 뜯으며 한 얘기(static, inner class)

NANA·2022년 9월 29일
0

그냥일기

목록 보기
2/7

static

일단 자바의 메모리 구조에 대해서
https://huelet.tistory.com/entry/JVM-%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0
이 글을 참고하자.

갓생을 사는 개발자 친구들과 대화하다가 static 얘기가 나왔는데
나는 아직 static에 대해 정리가 잘 안돼서 대충 써두려고 한다.

사실 내가 정리하는 거 아니고 친구가 정리해서 보내준 거 옮기는 거임.

static : 객체마다 가질 필요가 없는 공용으로 사용하는 필드
혹은 인스턴스 필드를 포함하지 않은 메소드.

  • 정적필드와 정적메소드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버이기에 클래스 로더가 클래스를 로딩해서
    메소드 메모리 영역에 적재할때 클래스별로 관리된다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용할 수 있다.
    출처: https://dev-coco.tistory.com/23 [슬기로운 개발생활:티스토리]

  • static메소드는 객체의 생성 없이 호출이 가능하고, 객체에서는 호출이 불가능하다.또한 static메소드 안에서는 인스턴스 변수 접근이 불가능 하다.
    출처: https://dev-coco.tistory.com/23 [슬기로운 개발생활:티스토리]
    --> 당연함. static 메소드 입장에서는 인스턴스 변수가 아직 세상에 태어난 놈이 아님.

final : 한 번 값이 정해지고 나면 값을 바꿀 수 없는 필드.
static final : 모든 영역에서 고정된 값으로 사용하는 상수(파이 같은 것)

대충 이렇게 정리되겠다.

inner class

나는 실무에서 inner class 를 한 번도 쓴 일이 없다.
친구 말로는 테스트 코드를 작성할 때 많이 사용된다고 한다.

말 그대로 이런 형태다.

class Outer {     // 외부 클래스

    ...

    class Inner { // 내부 클래스

        ...

    }

    ...

}

주로 외부클래스에서'만' 사용되기 위해 쓰이는 클래스라 할 수 있겠다.

내부클래스 종류
특징

인스턴스 클래스( instance class )
외부클래스의 멤버변수 선언위치에 선언하며, 외부클래스의 인스턴스처럼 다뤄진다.주로 외부클래스의 인스턴스 멤버들과 관련된 작업에 사용될 목적으로 선언된다.

스태틱 클래스( static class )
외부클래스의 멤버변수 선언위치에 선언하며, 외부클래스의 static멤버처럼 다루어진다. 주로 외부클래스의 static멤버, 특히 static 메소드에서 사용될 목적으로 선언된다.

지역 클래스( local class )
외부클래스의 메소드에 선언하며, 선언된 영역 내부에서만 사용될 수 있다

익명 클래스( anonymous class )
클래스의 선언과 객체의 생성을 동시에 하는 이름 없는 클래스로 일회용이다.

참고 내용 출처 http://www.tcpschool.com/java/java_usingClass_innerClass
https://tadaktadak-it.tistory.com/19 [타닥타닥 IT:티스토리]

사실 아직 내부클래스를 언제 어떻게 써야 하는지 감이 오지 않는다.

profile
기술블로그 그런 거창한 거 아닙니다. 일기에요 일기

0개의 댓글