1. 추상 클래스란? 추상이란 실체 간에 공통되는 특성을 추출한 것을 말한다. 예를 들어, 우리는 개, 고양이, 햄스터 등의 실체에서 동물이라는 공통되는 특징을 추출할 수 있다. 이런 관계가 클래스에서도 존재하는다. 우리는 객체를 직접 샌서알 수 있는 클래스(개, 고양이, 햄스터 등)을 "실체 클래스"라고 부르며 이 클래스들의공통된 특성을 추출하여 선언한 클래스를 "추상 클래스"라고 부른다. 이때 실체 클래스는 추상 클래스를 상속받아 구현된다. 추가적으로 추상 클래스는 실체 클래스의 공통되는 필드와 메소드를 추출해서 만들었기 때문에 객체를 직접 생성하여 사용할 수 없다. Animal animal = new Animal() // 불가능 추상 클래스는 아래와 같은 목적을 가지고 사용한다. 실체 클래스들의 공..
Java
1. getTime() 메서드 java.util.Date 객체의 getTime 메서드는 1970년 1월 1일 00시 00분 00초 UTC를 기준으로 경과 한 밀리초를 반환한다. 이 밀리초를 java.sql.Date의 생성자에 전달하게 되면 우리가 원하는 java.sql.Date 객체를 생성할 수 있다. 즉, 방법은 아래와 같다. public static void main(String[] args) { java.util.Date utilDate = new java.util.Date(); long milliSeconds = utilDate.getTime(); java.sql.Date sqlDate = new java.sql.Date(milliSeconds); System.out.println("java.ut..
1. Setter 일반적으로 객체 지향 프로그래밍에서는 외부에서 직접적으로 객체의 데이터에 접근하는 것을 막는다. 이는 객체의 데이터를 외부에서 마음대로 읽고 변경하는 경우 객체의 무결성이 깨질 수 있기 때문이다. 예를 들어, 어떤 데이터의 값은 항상 양수어야 하지만 외부에서 마음대로 작업한다면 음수로 만들어버릴 수도 있다. 이를 위해 우리는 setter라는 메서드를 사용한다. setter 메서드의 선언 방법은 아래와 같다. // 필드는 외부 접근을 막기 위해 private을 사용 private int intField; // Setter public void setIntField(int intField){ this.intField = intField; } 2. Getter 외부에서 데이터를 읽을 때 해당..
1. Final 필드 프로그램 작성시 이후 값을 변경하지 않을 필드들이 존재한다. 이런 경우 final을 사용한다. final을 붙인 필드들은 프로그램 실행 도중 수정이 불가능하다. 이때 해당 필드들을 초기화 하는 방법은 선언시 초기화 혹은 생성자에서 초기화로 총 2가지 방법이 존재한다. final String frontName="Coding"; final String name; public FinalExam (String lastName) { this.name=frontName+lastName; } 2. Static Final 필드 일반적으로 "불변의 값"을 "상수"라고 부른다. 하지만 final 필드는 상수가 될 수 없다. 왜냐하면 해당 값들은 객체마다 저장되기 때문에 객체마다 여러 값으로 초기화될 ..
Singleton의 정의 및 생성 방법 프로그램 실행시 단 하나의 객체만 만들도록 보장해야하는 경우가 존재한다. 이렇게 단 하나만 생성되는 객체를 Singleton이라고 부른다. 일반적으로 객체는 new 연산자를 통해 생성자가 호출되며 생성된다. 따라서 우리는 생성자가 호출되지 않도록 외부에서 new 생성자로 객체를 생성하지 못하도록 해야한다. 이 때문에 Singleton의 생성자는 외부에서 호출할 수 없도록 private 접근 제한자를 붙여줘야 한다. 그리고 어찌되었든 하나의 객체는 생성되어야 하므로 우리는 해당 객체를 해당 클래스 안에 private 접근 제한자로 정적(static)으로 선언한다. 이후 getInstance()라는 메서드를 선언하여 해당 객체를 외부 클래스에서 받을 수 있도록 해주면 ..
1. 정적 멤버 선언 정적 멤버는 클래스에 고정된 멤버로 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 말한다. 이들을 각각 정적 필드, 정적 메소드라고 부르며 이들은 인스턴스에 속한 멤버가 아니기 때문에 클래스 멤버라고도 불린다. 정적 멤버는 아래 방벙으로 선언할 수 있다. public class StaticExam { // 정적 필드 선언: static [타입] [필드명] static double pi = 3.14; // 정적 메소드 선언: static [리턴 타입] [메소드 명] (매개변수...) {...} static double circleArea(int radius) { double area = pi*radius*radius; return area; } } 위와 같은 정적 멤버들은 인스..
1. Array 선언 Java의 배열 변수를 선언하기 위해서는 아래 두 방식 중 하나의 방법을 사용하면 된다. // 1. 타입[] 변수; int[] intArray; String[] strArray; // 2. 타입 변수[]; int intArray[]; String strArray[]; 변수 선언 시에는 값의 목록을 통해 배열을 초기화할 수 있다. 단, 변수 선언 이후에는 값의 목록을 이용한 배열 생성은 컴파일 에러가 발생한다. // 값의 목록을 통해 초기화 int[] intArray = {1, 2, 3}; // 컴파일 에러 int[] intArray; intArray = {1, 2, 3}; 변수 선언 혹은 이후에 배열을 생성하기 위해서는 new 연산자를 아래와 같이 사용할 수 있다. // 1. 값의 ..
1. 현재 시간 가져오기 코딩을 하다보면 현재 시간과 관련된 작업을 해야할 때가 있다. 이런 경우 Java에서는 Date 클래스를 사용할 수 있다. Date 클래스는 다음과 같이 import한다. import java.util.Date; 이때 현재 시간을 가져오고 싶다면 다음과 같이 Date 객체를 생성하면 된다. Date now = new Date(); System.out.println(now); // 결과: Tue Jan 17 19:19:23 KST 2023 해당 클래스를 다루는 법은 현재 장에서는 다루지 않고 해당 시간을 내가 원하는 형태의 문자열로 바꾸는 방법을 살펴보자. 2. Date to String (SimpleDateFormat 활용) Date 클래스 타입을 String 클래스 타입으로 변..