본문 바로가기

java38

[Java] 20. 예외 처리(2) 1. 두개 이상의 catch try-catch 문을 쓸 때 catch에 Exception e라고 아무 생각 없이 썼습니다. 이 catch 블록이 시작되기 전에 있는 소괄호에는 예외의 종류를 명시합니다. 다시 말해서, 항상 Exception e라고 쓰는 것은 아니라는 것입니다. 전 글에서 사용했던 예제를 활용하여 다음과 같은 클래스를 만들어 봅시다. package c.exception; public class ExceptionSample { public static void main(String[] args) { ExceptionSample sample = new ExceptionSample(); sample.multiCatch(); } public void multiCatch() { int[] intAr.. 2019. 4. 18.
[Java] 20. 예외 처리(1) 1. 자바에서 매우 중요한 예외 자바에서는 예외라는 것이 있습니다. 예외를 모르면 자바를 모르는 것과 같다고 생각해도 됩니다. 자바에서는 예상과 다르게 동작을 하는 예외적인 일이 발생하게 되면 "예외"라는 것을 던져버립니다. 가장 일반적인 예가 null인 객체에 메소드를 호출한다든지, 5개의 공간을 가지는 배열을 만들어 6번째 값을 읽으라고 하는지 등의 경우가 있습니다. 2. try-catch는 짝이다 가장 일반적인 예로 설명한 배열 범위 밖의 값을 읽으려고 할 떄를 살펴보겠습니다. package c.exception; public class ExceptionSample { public static void main(String[] args) { ExceptionSample sample = new Exc.. 2019. 4. 17.
[Java] 19. 중첩 클래스(Nested Class) 1. 클래스 안의 클래스 자바에서는 클래스 안에 클래스가 들어갈 수 있습니다. 이러한 클래스를 "Nested 클래스"라고 부릅니다. 이와 같은 클래스가 존재하는 가장 큰 이유는 코드를 간단하게 표현하기 위함입니다. Nested 클래스는 자바 기반의 UI 처리를 할 때 사용자의 입력이나, 외부의 이벤트에 대한 처리를 하는 곳에서 가장 많이 사용됩니다. Nested 클래스는 선언한 방법에 따라 "Static nested 클래스"와 "내부 클래스"로 구분됩니다. Static nested 클래스와 내부 클래스의 차이는 static으로 선언되었는지 여부입니다. 내부 클래스는 다시 두가지로 나뉩니다. 이름이 있는 내부 클래스는 "로컬(혹은 지역) 내부 클래스" 라고 하고, 이름이 없는 클래스를 "익명 내부 클래스".. 2019. 4. 11.
[Java] 18. enum 클래스 1. enum 클래스라는 상수의 집합 앞장에서 배운 final로 String과 같은 문자열이나 숫자들을 나타내는 기본 자료형을 고정할 수 있습니다. 이렇게 고정된 값을 "상수", 영어로는 "constant" 라고 합니다. 그런데, 어떤 클래스가 상수만으로 만들어져 있을 경우에는 반드시 class로 선언할 필요는 없습니다. 이럴 떄 class 라고 선언하는 부분에 enum이라고 선언하면 "이 객체는 상수의 집합이다" 라는 것을 명시적으로 나타냅니다. enum 클래스는 어떻게 보면 타입이지만, 클래스의 일종입니다. 그래서 enum 클래스라고 부르면 됩니다. 한글로 번역해서 "열거형" 클래스라고 불러도 무방합니다. package c.enums; public enum OverTimeValues { THREE_H.. 2019. 4. 9.
[Java] 17. 상속과 final 1. 상속과 관련된 예약어 'final' final은 클래스, 메소드, 변수에 선언할 수 있습니다. final이라는 단어의 뜻은 "마지막" 이라는 뜻입니다. 이 예약어를 클래스, 메소드, 변수가 어떻게 달라지는지 각각의 상황에 대해서 알아봅시다. 2. 클래스에 final을 선언할 때 클래스 선언시 final을 접근 제어자와 class예약어 사이에 추가할 수 있습니다. package c.impl; public final class FinalClass { } 이 FinalClass의 객체를 생성하고, 선언된 메소드를 사용하는 것은 전혀 상관 없습니다. 하지만, 클래스가 final로 선언되어 있으면 상속을 해 줄 수 없습니다. extends 키워드로 이 클래스를 상속 받고 컴파일을 해보면 상속을 받을 수 없다.. 2019. 4. 8.
[Java] 16. 인터페이스(Interface)와 추상클래스(abstract 클래스) 1. 메소드 내용이 없는 interface 자바에서 .class 파일을 만들 수 있는 것에는 클래스만 있는 것이 아닙니다. interface(인터페이스)와 abstract 클래스라는 것이 있습니다. 시스템을 만들 때 설계 단계에서 프로그램을 어떻게 만들 것 인지 정리합니다. 이 때 어떤 메소드를 만들지, 어떤 변수를 만들지를 정리하는 작업도 같이 합니다. 그런데, 내용들을 문서에만 정리하면 나중에 메소드 관련 내용들이 변경되면 문서도 수정해야 하므로, 2중 3중의 일이 됩니다. 그래서, 이 설계 단계에서 인터페이스라는것을 만들어 두면 개발할 때 메소드의 이름을 어떻게 할지, 매개 변수를 어떻게 할지를 일일이 고민하지 않아도 됩니다. 게다가 개발자의 역량에 따라 메소드 이름과 매개 변수 이름이 천차만별일 .. 2019. 4. 1.