2020-11-22 접근 제한자의 종류는 4가지가 있다. public / protected / default / private이다. 이는 라이브러리 클래스 설계 시 외부(다른) 클래스에서 접근 가능/불가능 여부에 따라 필드, 생성자, 메서드를 설계하기 위해 사용된다. 오늘은 해당 내용에 대하여 알아보도록 하자. public : public 은 메인 클래스에서의 접근 제한자이며, 이름에서도 느껴지듯이 접근할 수 없는 클래스에 제한이 없고, public을 적용할 수 있는 대상으로는 클래스 , 필드 , 생성자, 메서드 모두 가능하다. protected : protected의 경우 상속이라는 개념과도 연관이 있는데, public와 달리 자식 클래스가 아닌 외부(다른) 패키지의 클래스는 접근을 할 수 없다. 또한..
2020-11-21 final 이름에서도 느껴지듯이 자바에서 final이 선언된 값은 프로그램 실행 도중 변경을 할 수 없다. 때문에 초기화 준 값에서 바뀌지 않는다는 것인데, 초기화 방법을 알아보자. public class tFinal { final String name = "홍길동"; //필드에서 초기화 하는 방법 final String bloodType; public tFinal(String bloodType) { this.bloodType = bloodType; } //생성자에서 초기화 하는 방법 } 위의 코드에서 볼 수 있듯이 final 을 초기화하는 방법은 필드와 생성자를 통해서만 초기화할 수 있다. 단순한 값이라면 필드에서 선언하는 것이 좋으며, 외부에서 입력받아야만 하는 값이라면, 생성자를..
2020-11-20 문제 창영마을에서 정인이의 반란은 실패로 끝났다. (3028번) 테러리스트로 변신한 정인이는 창영마을에 경고를 하려고 한다. 사실 정인이는 창영마을에서 제일 착한사람이다. 따라서, 사람들을 다치지 않게하려고 한다. 유튜브에서 폭발에 대한 동영상을 찾아보다가, 그는 나트륨을 물에 던지면 폭발한다는 사실을 알게 되었다. 정인이는 창영마을의 중심을 지나는 "강산강" 근처에 숨어있다가, 나트륨을 위의 동영상처럼 물에 던질 것이다. 현재 시간과 정인이가 나트륨을 던질 시간이 주어졌을 때, 정인이가 얼마나 숨어있어야 하는지 구하는 프로그램을 작성하시오. (정인이는 적어도 1초를 기다리며, 많아야 24시간을 기다린다.) 입력 첫째 줄에 현재 시간이 hh:mm:ss 형식으로 주어진다. (시, 분, ..
2020-11-19 다수의 Overloading을 하다 보면 반복적인 this 코드를 사용하게 되는데, 이러한 불필요한 반복을 줄이는 방법을 알아보자. (예제는 전에 오버 로딩 글에서 사용하던 걸 사용하도록 하겠다.) 오버 로딩 글 링크 : seeminglyjs.tistory.com/167 public class Overloading { String name; String sex; int age; public Overloading() { } public Overloading(String name) { this.name = name; } //이름 매개변수를 받는 생성자 public Overloading(String name, String sex) { this.name = name; this.sex = se..
2020-11-18 문제 Lucky Set이란 정수의 집합이다. 구간 [A,B]란 A보다 크거나 같고, B보다 작거나 같은 모든 정수가 있는 구간이다. 이때, A와 B는 모두 양수이고, B는 A보다 크다. 구간 [A,B]가 Unlucky가 되기 위해선 구간에 속한 모든 정수가 Lucky Set에 없어야 한다. Lucky Set과 N이 주어질 때, N을 포함하는 Unlucky 구간의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 Lucky Set에 포함된 숫자의 개수 L이 주어진다. 둘째 줄에는 L개의 수가 주어진다. 이 수는 1,000보다 작거나 같은 자연수이고, L은 50보다 작거나 같은 자연수이다. 그리고 중복되지 않는다. 마지막 줄에는 N이 주어진다. N은 Lucky Set에서 가장 큰 수보..
2020-11-16 클래스에는 3가지 요소가 존재하는데, 바로 필드 / 생성자 / 메서드 가 있다. 오늘은 이 3가지 중 초기화를 담당하는 생성자의 오버 로딩에 대해서 알아보도록 하겠다. 우선 오버로딩이라는 단어의 뜻에서 유추할 수 있듯이 기존의 기본 생성자를 다양한 방법으로 객체를 생성할 수 있도록 매개변수를 달리하여, 다수의 생성자를 선언하는 것이다. ( 말이 좀 어려울 수 도 있는데, 코드를 보면 쉽게 이해할 수 있다.) public class Overloading { String name; String sex; int age; public Overloading() { } public Overloading(String name) { this.name = name; } //이름 매개변수를 받는 생성자..