분류 전체보기

    enum 사용하는 이유는 무엇인가요?

    📝느낀 점 아마, 나처럼 지금까지 공부한 사람들은 enum에 대해 알기는 알지만, 잘 사용하지도 않고, 적절하게 사용하는 곳도 자세히 몰라서 쓰지도 않는 그런 느낌이 들거라고 생각든다. (아니면 죄송합니다..) 하지만, 지금의 나는 좀 탈출하지 않았나 싶다. 우테코 프리코스 과정을 진행하면서 매번 과제를 하며 느낀 것이지만 이럴때 enum을 사용하는구나 하며 많이 알게된 것 같다. 그렇기에 enum은 열거형이라고 불리며, 서로 연관된 상수들의 집합을 의미한다. 그리고 컴파일 타임에 타입 안정성을 보장하며 연관된 상수들을 한곳에서만 관리하면 되기 때문에 관리하기 편했던 경험이들이 있다. enum도 하나의 객체고, 하나의 클래스이다. enum도 인스턴스이다. 그리고 JVM에서 유일하게 하나만 존재하는 것이다..

    제네릭이 필요한 이유는 무엇인가요?

    📝느낀 점 이 글을 정리하기 전까지의 나의 생각은, "제네릭이란?" -> 결국 컬렉션인 List 같은곳에 사용하는 거 아냐? "문법이 이렇게 되어 있으니,, 이렇게 사용하는가 보다" 했던 나의 바보같은 과거들... 그런식으로 공부하지마 이제서야 이렇게 깨우치고 점점 깊이 있게 이해하고 있으니 점점 알게 될때 마다 포스팅에 살을 붙여 나가야 겠다. 제네릭이란? 타입 형변환에서 발생할 수 있는 에러들을 처음부터 막기 위해 제네릭이라는 개념이 나왔다고 한다. 누가? -> 컴파일이! 컴파일이 체크 해준다고 생각하면 되는 것이다. 클래스 내부가 아닌 외부에서 지정해주는 느낌으로 생각하면 좋지 않을까 생각든다. 제네릭이란? 타입 형변환에서 발생할 수 있는 문제점을 “사전”에 없애기 위해서 만들어졌다 여기서, “사전..

    박싱(boxing), 언박싱(un-boxing)

    📝느낀 점 박싱, 언박싱에 대해 알고는 있었으나 이것을 "왜? 알아야 할까?" 하는 나의 질문에 답변을 하지 못하였다. 즉, 프로그래밍 언어를 사용하면서 필요하다는 건 알겠으니, 알고는 있어야 겠지? 이런 느낌이였다. 하지만, 다시 생각을 바로 잡고 하나하나 왜 쓰는지, 왜 필요한지, 이거에 대한 활용도는 뭔지 등등 천천히 생각을 바로 하며 정리해 나갔으면 좋겠다. 박싱과 언박싱은 결국, Primitive 타입에서 -> reference 타입으로 변환 해주는 과정을 말한다. 그리고 언박싱이란 그 반대이다. 중요한건 박싱을 함으로써 자료구조 같은 기본 자료형이 아닌 레퍼런스 타입을 필요로 하는 경우가 많기 때문이다. 그리고 언박싱은 메모리를 더 효율적으로 사용하기 위해 생겨난 개념이라고 생각한다. 박싱(b..

    추상클래스와 인터페이스의 용도를 나눈 이유는 무엇인가요?

    📝느낀 점 항상 궁금하였던 부분이다. 둘다 비슷한 기능을 하는거 같은데, 인터페이스만 있으면 되는거 아닌가? 하는 생각을 매번 하여 왔다. 이번에 제대로 알아보고 둘의 차이점을 작성 해볼까 한다. 추상 클래스와 인터페이스는 서로 다른 목적과 사용 사례를 가지고 있다는 것이 포인트이다. 핵심만 정리해 보자면, 추상 클래스는 재정의를 하여 확장 개념에 목적을 두고 있는 것이고, 인터페이스는 구현 클래스들이 같은 동작을 하는 것을 보장하는 것에 목적이 있는 것이다. 차이가 뭔가? 추상 클래스는 abstract 지시자로 정의되어서, 추상 메서드가 하나 이상 포함되는 클래스이고, 인터페이스는 interface 지시자로 정의되어서, 모든 메서드가 추상메서드로 정의되게 된다. -> 하지만 - 자바 8부터 디폴트 메서..

    오버로딩, 오버라이딩 설명

    📝느낀 점 오버로딩과 오버라이딩은 중요한 것이기 때문에, 한번 정리하고 싶기에 이렇게 작성한다. 오버로딩은 같은 이름의 메소드를 작성 하는데 매개변수, 매개변수 수가 다른 경우, 오버라이딩은 상속 받은 메소드를 재정의하고 싶을때이다. 그리고 하나 알아둬야 할것은 상속 받은 메서드를 오버라이딩 할 시, 스태틱 관련 오버라이딩을 할 경우 상위 클래스의 메서드가 하이딩처리 된다는 것이다. static 메서드에 @Override를 달면 컴파일 에러가 발생한다는 것 도 알고 있자. 오버로딩 정의 자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다. 오버로딩의 조건 메소드의 이름이 같고, 매개변수의 개..