본문 바로가기

반응형

분류 전체보기

(237)
[JAVA] java.lang java.lang 패키지는 자바 프로그래밍에서 가장 기본이 되는 클래스들을 포함하고 있다. Object나 String 과 같은 클래스들을 포함하고 있는데, 이 클래스들은 import 없이도 사용할 수 있다. 1. Object 클래스 Object 클래스는 자바의 모든 클래스의 최고 조상 클래스이다. 그렇기 때문에 Object 클래스의 멤버들은 모든 클래스에서 바로 사용이 가능하다. 메서드 설명 protected Object clone() 객체 자신의 복사본을 반환한다. Object 클래스에 정의된 clone() 메서드는 단순히 인스턴스 변수의 값을 복사하기 때문에 참조 변수 타입의 인스턴스 변수가 정의되어 있는 클래스는 완전한 복사가 이루어지지 않는다. 그렇기 때문에 clone으로 복사한 객체의 수정이 원..
[JAVA] 예외처리 (Exception handling) 1. 프로그램 오류 프로그램 실행 중에 어떠한 원인에 의해 프로그램이 오작동 하거나 비정상적으로 종료되는 경우가 있는데, 이러한 경우를 프로그램 에러 또는 오류라고 한다. 에러는 발생 시점에 따라 '컴파일 에러'와 '런타임 에러'로 나눌 수 있다. 이외에도 컴파일 에러나 런타임 에러와는 조금 달리 정상적으로 실행되지만 의도와 다른 동작을 보이는 '논리적 에러'도 있다. 컴파일 에러의 경우 프로그램이 실행되기 전에 컴파일러를 통해서 오류를 잡을 수 있지만, 런타임 에러의 경우는 실행되기 전에는 알 수 없다. 이러한 런타임 에러를 방지하기 위해서는 프로그램의 실행 도중 발생할 수 있는 모든 경우의 수를 고려하여 대비를 해야한다. 자바에서는 런타임에 발생할 수 있는 프로그램 오류를 에러(error)와 예외(e..
[JAVA] 내부 클래스 (Inner class) 1. 내부클래스 내부클래스는 클래스 내부에 선언된 클래스이다. 서로간에 긴밀한 관계를 가지는 클래스들에 대해서 한 클래스 내부에 다른 클래스를 선언함으로 내부에서 쉽게 접근하고, 외부에서는 해당 클래스에 대한 불필요한 접근을 감춤으로서 코드의 복잡성을 줄일 수 있다. class A { // 외부 클래스 A의 내부에 클래스 B를 선언한다. class B { ... } } 2. 내부클래스의 종류와 특징 내부클래스의 종류는 변수의 선언위치에 따른 종류와 같다. 변수가 선언되는 위치에 따라 인스턴스 변수, 클래스 변수 (static 변수), 지역변수로 구분되는 것과 같이 내부클래스도 다음과 같이 구분된다. 내부 클래스 설명 인스턴스 클래스 외부 클래스의 멤버변수 선언 위치에 선언하며, 외부 클래스의 인스턴스 멤..
[JAVA] 인터페이스 (Interface) 1. 인터페이스 인터페이스는 일종의 추상클래스이다. 추상클래스와 같이 추상메서드를 가지고 있지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 구현부를 가진 일반 메서드는 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가질 수 있다. 추상클래스가 부분적으로 미완성 된 추상메서드를 가지고 있는 미완성 설계도라면, 인터페이스는 아무런 구현이 되어있지 않은 기본 설계도라고 할 수 있다. 아무 로직을 가지고 있지 않은 상태이기 때문에 그 자체로는 클래스의 역할을 할 수 없으나 다른 클래스를 작성하는데 밑바탕이 되는 설계 역할을 할 수 있다. 2. 인터페이스 작성 인터페이스는 class가 아닌 'interface' 키워드를 통해 선언한다. 그리고 클래스와 같이 접근제어자로 public 또는 defaul..
[JAVA] 추상클래스 (abstract class) 1. 추상클래스 추상클래스는 추상메서드를 포함하고 있는 클래스이다. 추상메서드는 메서드의 내용이 구현되어 있지 않기 때문에 상속을 통해서 메서드를 구현해 주어야 한다. 그렇기 때문에 추상클래스를 통해서 인스턴스를 생성할 수 없다. 추상클래스 자체로는 인스턴스를 생성하는 등의 클래스로서의 역할을 다 하지 못하지만, 새로운 클래스를 작성하는데 있어서 설계의 기반이 되는 조상 클래스로서의 역할을 할 수 있다. 추상클래스는 클래스 선언부에 abstract 키워드를 붙여서 선언한다. 이 키워드를 통해서 해당 클래스의 추상메서드를 구현해주어야 한다는 것을 알 수 있다. abstract class ClassName { ... } 추상클래스는 추상메서드를 포함할 수 있다는 것을 제외하고는 일반 클래스와 동일하다. 생성..
[JAVA] 다형성 (Polymorphism) 1. 다형성 (polymorphism) 다형성이랑 '여러가지 형태를 가질 수 있는 능력'을 의미한다. 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다. 이 말은 조상 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 수 있도록 하였다는 의미이다. class Parent { ... } class Child extends Parent { ... } ... // 각각의 참조 변수의 선언 타입과 일치하는 인스턴스를 참조한다. Parent p = new Parent(); Child c = new Child(); // 각각의 타입과 일치하는 자손 인스턴스를 참조한 위의 예시와 달리 // 조상 타입의 참조 변수로 자손 인스턴스를 참조한다. Par..
[JAVA] 제어자 (Modifier) 1. 제어자 (modifier) 제어자란 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자는 접근 제어자와 그 외의 제어자로 구분할 수 있다. - 접근 제어자: public, protected, default, private - 그 외의 제어자: static, final, abstract, native, transient, synchronized, volatile, strictfp 제어자는 여러 제어자를 조합하여 사용하는 것이 가능한데, 접근 제어자는 4가지 중 하나만 선택해서 사용할 수 있다. 2. static static은 '클래스의' 또는 '공통적인'의 의미를 가지고 있다. 인스턴스 변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만 클래스 변수는..
[JAVA] 자바 패키지 1. 패키지 (package) 패키지란 클래스의 묶음이다. 패키지에는 클래스와 인터페이스를 포함시킬 수 있으며 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있다. 같은 이름의 클래스이더라도 서로 다른 패키지에 위치시키는 것이 가능하기 때문에 같은 이름의 클래스끼리 충돌하는 것을 방지할 수 있다. 클래스가 컴파일되면 하나의 클래스 파일 (.class)가 되는 것처럼 패키지 또한 물리적인 구조를 가지는데, 디렉토리를 통해 계층이 이루어진다. 예를들어 java.lang.String 클래스는 java 디렉토리 안의 lang 디렉토리에 해당 클래스 파일이 위치하고 있다. 하나의 소스파일은 첫번쨰 문장에 package 키워드로 패키지를 선언할 수 있으며, 단 한번의 선언만 허용한다..

반응형