본문 바로가기

전체 글74

[Java] 예외처리 예외처리(exception handling)란? 프로그램이 오작동 하거나 비정상적으로 종료되는 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생시점에 따라 분류하는데 컴파일 시에 발생하는 에러를 '컴파일 에러(compile-time error)', 런타임 시에 발생하는 에러를 '런타임 에러(runtime error)', 실행은 되지만 의도와는 다르게 동작하는 경우를 '논리적 에러(logical error)'라고 한다. 컴파일 에러 : 컴파일 시에 발생하는 에러 런타임 에러 : 실행 시에 발생하는 에러 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것 런타임 에러는 프로그램이 멈추거나 비정상적인 종료를 초래하기 때문에 실행도중 발생할 수 있는 모든 경우의 수를 대비해야 한다. .. 2022. 6. 27.
[Java] 내부 클래스 내부 클래스(inner class)란? 클래스 내에 선언된 클래스를 의미한다. 두 클래스가 밀접한 관계가 있는 경우 내부 클래스로 선언하며, 이 경우 클라이언트에게 불필요한(거의 사용하지 않는) 클래스를 숨겨 코드의 복잡성을 줄일 수 있다는 장점이 있다. 형태는 다음과 같다. class ClassA { //외부 클래스 //... class ClassB { //내부 클래스 //... } //... } 내부 클래스는 외부 클래스의 멤버로 취급되며 선언된 위치에 따라 종류와 특징이 달라진다. 책의 예제를 통해 확인해보자. class Outer { // 인스턴스 클래스 // 주로 외부 클래스의 인스턴스 멤버들과 관련된 작업에 사용 class InstanceInner {} // 스태틱 클래스 // 주로 외부 클래.. 2022. 6. 25.
[Java] 인터페이스 인터페이스(interface)란? 우리들은 컴퓨터를 사용할 때 화면에서 제공하는 기능만을 사용할 수 있으며 이런 화면을 인터페이스라고 한다. 자바에서 말하는 인터페이스 또한 이와 다르지 않다. 즉, 클래스를 사용하는 개발자에게 사용할 수 있는 정보만을 제공하는 역할을 수행하는 것이다. 인터페이스는 추상 클래스와 구조적으로 크게 다른 것은 없으며 추상화 정도가 더 높을 뿐이다. 추상 메서드를 갖지만 일반 메서드 또는 멤버 변수를 가질 수 없다는 특징이 있으며, 추상 클래스와 마찬가지로 추상 메서드에 대한 구현을 강제한다. 인터페이스의 구조는 다음과 같다. interface 인터페이스이름 { public static final 타입 상수이름 = 값; public abstract 메서드이름(매개변수 목록); .. 2022. 6. 23.
[Java] 다형성 다형성(polymorphism)이란? 객체지향개념에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미한다. 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조하는, 즉 상위 클래스 타입의 참조변수로 하위 클래스의 인스턴스를 참조할 수 있도록 다형성을 구현하였다. 다형성을 이해하기 위해선 상속의 개념에 대한 선 이해가 필수적이므로 부족하다면 상속을 먼저 공부한 뒤 이어서 진행하자. 아래의 분류도를 보고 간단한 질문의 답을 생각해보자. '정온동물에 포유류가 포함되는가?' 답은 '그렇다'이다. '정온동물에 조류가 포함되는가?' 답은 역시 '그렇다'이다. 이를 통해 하위의 존재는 상위의 존재에 포함돼있음을 알 수 있다. 따라서 정온동물이라고 했을 때 포유류가 될 수도 조류가 될 수도 있는 것이다.. 2022. 6. 17.
[Java] 제어자 제어자란? 제어자(modifier)는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자는 크게 접근 제어자와 그 외의 제어자로 나뉘며, 하나의 대상에 여러 제어자를 조합하여 사용하는 것이 가능하다. 하지만 접근 제어자는 한 대상에 하나만 사용 가능하다. 제어자는 다음과 같다. 접근 제어자 : public, protected, default, private 그 외 : static, final, abstract, native, transient, synchronized, volatile, strictfp ※ 제어자들 간의 순서는 관계없지만 주로 접근 제어자를 제일 왼쪽에 위치 시킨다. static 자바에서 static은 '클래스의' 또는 '공통적인'의 의미를 지닌다. 즉.. 2022. 6. 13.
[Java] package와 import 패키지(package) 패키지는 클래스의 묶음으로 클래스 또는 인터페이스를 포함시킬 수 있다. 서로 관련된 클래스들끼리 그룹 단위로 묶어 효율적으로 관리할 수 있다. 같은 이름의 클래스라도 서로 다른 패키지에 존재하는 것이 가능하므로 충돌을 피할 수 있다. 클래스가 물리적으로 하나의 클래스 파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리이다. 디렉토리가 하위 디렉토리를 가질 수 있는 것처럼, 패키지도 다른 패키지를 포함할 수 있으며 '.'으로 구분한다. 예를 들면 java.lang 패키지에서 lang 패키지는 java 패키지의 하위 패키지이다. 패키지에 대해 간단히 정리하면 다음과 같다. 'package 패키지명;' 의 형태로 선언되며 반드시 주석과 공백을 제외한 첫 번째 문장이어야 .. 2022. 6. 10.