Java

· Java
일반적으로 자바 이론 공부를 하다보면 추상클래스는 객체 생성이 불가능하다고 설명합니다. 오늘은 이와 관련해서 개인적으로 궁금했던 몇 가지를 정리했습니다. 관련 키워드 : 참조 배열, 익명 클래스 추상 클래스 Animal public abstract class Animal { abstract void bark(); } 구현 클래스 Cat public class Cat extends Animal{ @Override void bark() { System.out.println("냥냥"); } } 구현 클래스 Dog public class Dog extends Animal{ @Override void bark() { System.out.println("멍멍"); } } 오늘 다뤄볼 예제 클래스들 입니다. 복잡한 ..
· Java
어노테이션 스프링이나 스프링부트를 사용하다보면 여러 어노테이션들을 마주할 수 있습니다. @Service //어노테이션 예시 그러면 스프링에서는 아 얘가 Service구나 파악을 하고 관리해주겠죠. 저는 그래서 이런 어노테이션은 곧 메서드랑 비슷하구나 생각을 했었습니다. 그러나 찾아보니 어노테이션이라는 단어 자체는 주석이라는 뜻을 가지고 있다고 합니다. 주석과 비슷하면서도 다른 점이 존재하는데, 그것은 뭔가 특별한 기능을 제공한다는 점에서 차이가 있습니다. 어노테이션을 붙인 메서드나 클래스에는 별 다른 기능을 제공하지 않는다고 합니다. 다만 다른 곳에서 이 프로그램을 인식하기 쉽게 정보를 제공해준다고 합니다. 이게 특별한거죠. 아까 예시처럼 @Service를 붙인 BoardService가 있다고 해볼게요...
· Java
Enum을 정의하는 방법 Enum이란? enum 열거형은 서로 관련된 상수를 편리하게 선언하기 위한 것으로 상수를 여러 개 정의할 때 사용합니다. enum은 여러 상수를 정의한 후, 정의된 것 이외의 값은 허용하지 않는다는 특징이 있습니다. 또한 자바의 열거형은 C언어와는 달리 타입까지 비교가 가능하다고 합니다. public enum Dir { UP, DOWN, LEFT, RIGHT } 열거형은 위와 같이 작성할 수 있습니다. @Getter @Setter public class EnumExample { public enum Dir { UP, DOWN, LEFT, RIGHT } private int x; private int y; public void move(Dir dir){ switch (dir){ c..
· Java
| 백기선님의 자바 라이브 스터디 10주차 주제입니다. 프로세스와 쓰레드 프로세스는 실행 중인 프로그램을 의미합니다. 프로그램을 실행하면 운영체제가 실행에 필요한 메모리를 할당해주면서 프로세스가 됩니다. 프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있으며 작업을 수행하는 것이 바로 쓰레드가 됩니다. 따라서 프로세스에는 최소한 하나 이상의 쓰레드가 존재하고 둘 이상의 쓰레드를 가진 프로세스는 멀티쓰레드 프로세스가 됩니다. 멀티쓰레드를 사용하는 이유에 대해서 알아보기 위해 멀티쓰레드 장점을 나열해보겠습니다. 멀티 쓰레딩의 장점 CPU의 사용률을 향상시킨다 자원을 보다 효율적으로 사용할 수 있다 사용자에 대한 응답성이 향상된다 작업이 분리되어 코드가 간결해진다 ..
· Java
들어가기 자료를 찾기 이전에 제가 알고 있던 예외처리는 그저 try-catch 정도였습니다. 다중 예외처리를 구현할때는 예외 계층에 대해서 주의해야하구요. 사실 저는 그냥 throws Exception 위주로 사용하고 있었습니다. 이번 기회에 모르는 부분이 있다면 보충해보고 잘못 알고 있는 부분은 정정해보겠습니다. 예외란? 예외가 무엇일까요? 에러의 경우에는 오동작 혹은 고장으로 인해서 프로그램이 종료되는 상황입니다. 이런 상황은 애초에 발생하지 않도록 주의해야합니다. 예외는 사용자의 잘못된 조작으로 인해서 발생할 수 있습니다. 원래라면 예외도 프로그램이 종료가 되지만 프로그래머가 예외처리를 통해서 정상적으로 작동하게끔 만들 수 있습니다. 에러와 예외의 차이점 한 줄 요약 -> 예외는 에러와 달리 핸들링..
· Java
| 백기선님의 자바 라이브 스터디 8주차 주제!! 인터페이스란? 추상클래스에 대해서 다뤘었죠. 인터페이스는 추상화를 극대화한 추상클래스라고 볼 수 있습니다. 추상클래스와의 차이점을 언급해볼게요. 추상클래스는 추상메서드 + 일반 메서드나 필드를 가진다면, 인터페이스는 Only 추상메서드, 상수만 가질 수 있습니다. 추상클래스는 "is-a : ~는 ~이다" 의 개념이고 인터페이스는 "has-a : ~는 ~를 할 수 있다." 라는 내용도 기억해두시면 좋습니다. 개인적으로 이 인터페이스는 자바의 다형성을 이용하는 방식으로 코드의 수정을 줄이고 유지보수성을 높인다고 생각합니다. (변경에는 닫혀있으며 확장에는 열려있다) 인터페이스 정의하는 방법 추상클래스랑 인터페이스랑 구분이 있어야 컴파일하는 과정에서 문제를 캐치..
· Java
| 백기선님의 자바 라이브 스터디 7주차 주제 패키지란? 자바에서 패키지는 클래스나 인터페이스를 구분짓는 폴더(디렉토리) 개념입니다. 우리가 D드라이브 → 사진 폴더 → 음식 or 인물 등등 구분지어서 정리하듯이 묶어서 관리하는데 사용됩니다. 위의 예시를 굳이 패키지스럽게 표현하자면 D.사진.음식 이런 느낌이겠네요. package com.example; 소스에서 가장 맨 윗줄에 위치하고 있으며 딱 한 줄만 필요합니다. 패키지 이름과 소스 코드가 위치한 폴더의 이름이 동일해야합니다. 따라서 중간에 패키지 이름(폴더 이름)을 변경한 경우 소스 코드에서도 수정이 필요합니다. 패키지 이름은 java로 시작해서는 안된다고 합니다. 아마도 java나 javax라는 패키지가 자바 기본(확장) 패키지라서 그런가봅니다...
· Java
객체지향 프로그래밍(OOP)가 무엇인지 그 특징은 어떠한지 살펴볼게요. 객체지향 프로그래밍의 정의 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. - 위키 백과 위키에 따르면 객체 지향 프로그래밍은 절차지향 프로그래밍과 달리 "객체"들로 시선을 달리했다고 설명합니다. 뭐.. 거의 이름을 풀어서 설명한거랑 똑같죠. 자바 입문서들에서 공통적으로 객체지향은 실제세계를 모델링하여 소프트웨어를 개발하는 방법이라고 표현합니다. 절차지향의 대표적 언어인 C언어는 그럼 실제세계를 모델링하기 어렵나요?? 그렇습니다. C언어에는 구조체가 있지만 그 구조체(..
· Java
I 백기선님의 자바 라이브 스터디 6주차 주제 상속에 대해서 포스팅하겠습니다. 상속이란? 상속은 상위 클래스에서 정의한 필드와 메서드를 하위 클래스에서 물려받아 사용할 수 있도록 해주는 기능입니다. 상속을 사용하면 불필요한 중복 코드를 줄일 수 있습니다. 좋은 예시가 될지는 모르겠지만, 카페를 예시로 들어보겠습니다. 커피류들은 커피(샷..?) + 추가 아이템(우유나 캬라멜 시럽등)을 가지겠죠. 그리고 음료를 제조하는 과정(행동 = 메서드)이 필요할겁니다. 커피 종류마다 조금씩은 다르지만 통합할 수 있는 내용들이 있다면 그것들은 부모 클래스에서 상속받아서 사용하는 편이 더 좋더라~ 이 얘기입니다. class 자식클래스 extends 부모클래스{ } /* class 커피{ protected int shot;..
· Java
2021.04.16 - [Java] - [JAVA] 자바 라이브 스터디 4주차 과제 1 : 과제 참여율 구하기 [JAVA] 자바 라이브 스터디 4주차 과제 1 : 과제 참여율 구하기 Github API를 이용해서 참여자들의 참여율을 계산하는 과제였습니다. 과제 요구사항을 그대로 가져와서 한 번 살펴보겠습니다. github.com/whiteship/live-study/issues/4 4주차 과제: 제어문 · Issue #4 · whit.. coding-nyan.tistory.com 이 포스팅에서 저는 private method를 테스트 했어야 했고 Reflection이라는 방식을 이용해서 조금은 복잡하게 테스트를 진행했습니다. 이렇게까지 복잡한 것을 보면 애초에 private method는 테스트 대상이 ..
moongomi
'Java' 카테고리의 글 목록