Java 107

예외 클래스 계층구조

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 자바에서는 예외도 "클래스"이다자바에서는 프로그램 실행 도중 문제가 발생했을 때, 이 문제(오류, 예외)를 객체로 만들어서 처리합니다.즉, 자바에서 예외는 "예외 클래스의 객체"로 표현되며, 이 예외 클래스들은 모두 Object 클래스의 자손입니다.왜냐하면 자바에서는 모든 클래스의 최고 조상은 Object이기 때문입니다.예외 클래스 계층도 (Exception 클래스 중심)모든 예외는 아래와 같이 클래스 상속 구조로 되어 있습니다: Exception 계열과 RuntimeException 계열1. Exception 클래스와 그 자손들 (※ RuntimeException 제외)이 그룹은 일반적인 예외입니다. 보통은 사용자의 입력 실수나 외부 자원과 관련..

Java 2025.06.21

프로그램 오류

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 프로그램 오류란?컴퓨터 프로그램은 우리가 원하는 작업을 자동으로 처리해주는 도구입니다.하지만 사람이 만든 프로그램은 완벽하지 않아서, 실행 중에 오작동을 하거나 비정상적으로 종료되는 일이 생길 수 있습니다.이러한 원치 않는 결과를 만드는 프로그램 내부의 문제를 "오류(Error)" 또는 "버그(Bug)"라고 부릅니다. 오류의 3가지 종류오류는 크게 언제, 어떤 상황에서 발생하느냐에 따라 3가지로 나눌 수 있습니다.컴파일 에러프로그램을 실행하기 전에, 컴파일(번역)하는 도중에 발생하는 오류. 문법 오류 등이 포함됨.런타임 에러프로그램을 실제로 실행할 때 발생하는 오류. 실행 중 문제가 생긴 경우논리적 에러문법상 문제도 없고 실행도 되지만, 의도한 대..

Java 2025.06.21

인터페이스 장점

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.인터페이스의 장점인터페이스를 사용하는 이유와 그 장점을 정리해보면 다음과 같은 네 가지로 요약할 수 있습니다:개발 시간을 단축시킬 수 있다.표준화가 가능하다.서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다.독립적인 프로그래밍이 가능하다. 개발 시간을 단축시킬 수 있다인터페이스는 "어떤 기능이 존재해야 한다"는 기능의 틀만 제공합니다.이 틀만 제공되면, 다른 쪽에서 그 기능이 실제로 어떻게 구현되는지는 몰라도미리 코드를 작성할 수 있습니다.예를 들어:interface TV { void turnOn(); void turnOff();}이 인터페이스가 정의되어 있으면, TV 인터페이스를 사용하는 쪽은 turnOn(), turnOff() 메서드..

Java 2025.06.20

인터페이스

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 인터페이스란?인터페이스는 일종의 추상 클래스입니다.그런데 추상 클래스보다 더 추상화된 구조입니다.상수와 추상 메서드만을 가질 수 있으며,즉, 구현(내용)을 아예 가질 수 없는 것이 원칙이었습니다.요약하면:인터페이스는 "이 안에 어떤 메서드가 반드시 구현되어 있어야 한다"는계약서 혹은 설계도 같은 역할을 합니다. 인터페이스의 용도표준화:여러 클래스가 공통의 동작을 하도록 강제할 수 있습니다.→ 예: Comparable, Runnable 같은 자바 기본 인터페이스들다형성:인터페이스를 타입으로 사용하면 다양한 객체를 같은 방식으로 다룰 수 있습니다.느슨한 결합:구현체와 상호작용은 인터페이스를 통해 하므로,내부 구현이 바뀌어도 외부는 영향을 받지 않습니다..

Java 2025.06.20

instanceof 연산자

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다.instanceof 연산자란?정의instanceof는 참조변수가 참조하고 있는 실제 인스턴스(객체)의 타입을 확인할 수 있는 연산자입니다.if (참조변수 instanceof 클래스이름) 참조변수가 클래스이름 타입의 객체인지 확인합니다.결과는 true 또는 false로 나옵니다. (boolean 타입) 사용 목적예제 코드void doWork(Car c) { if (c instanceof FireEngine) { FireEngine fe = (FireEngine) c; // 1. 형변환 가능 확인 → 2. 형변환 fe.water(); }}설명:doWork() 메서드는 Car 타입의 참조변수 c를 매개변수로 받습니다..

Java 2025.06.20

캡슐화와 접근 제어자

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 캡슐화(encapsulation)란?객체지향의 중요한 개념으로, 데이터(필드)와 그 데이터를 사용하는 메서드를 하나의 단위(클래스)로 묶고, 외부에서 직접 접근하지 못하도록 숨기고 필요한 경우에만 공개하는 것입니다.즉, 정보 은닉(data hiding)을 하는 것이며, 객체 내부의 동작을 외부에 감추고, 안정성과 유지보수성을 높이기 위한 목적이 있습니다. 접근 제어자를 사용하는 이유외부로부터 데이터를 보호하기 위해서잘못된 값이 들어오지 않도록 막는다.내부적으로만 사용되는 부분을 감추기 위해서내부 동작을 감춰 코드의 복잡도를 줄이고, 외부 사용자는 필요한 인터페이스만 사용하게 한다. 예시: Time 클래스 – 시간 표현 클래스public class ..

Java 2025.06.20

클래스 간의 관계 결정

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 클래스 관계가 헷갈릴 때 어떻게 판단할까?객체지향 프로그래밍에서 클래스를 만들다 보면 "이 클래스는 다른 클래스의 기능을 물려받아야 할까? 아니면 그걸 내부에 포함해야 할까?" 하는 고민을 하게 됩니다.이럴 때 사용하는 기준이 바로 아래 두 문장입니다:“A는 B이다” → 상속 (is-a 관계)“A는 B를 가지고 있다” → 포함 (has-a 관계) 예시: 원(Circle)과 점(Point)의 관계예시 클래스 ① – 포함 관계class Circle { Point c = new Point(); // 중심 좌표 (Point 객체를 멤버 변수로 포함) int r; // 반지름}예시 클래스 ② – 상속 관계class..

Java 2025.06.20

오버로딩

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 메서드도 변수처럼 이름이 겹치면 안 될까?보통 변수는 같은 이름으로 두 번 선언할 수 없습니다.마찬가지로 메서드도 기본적으로는 이름이 중복되면 안 됩니다.하지만 자바에서는 특별한 경우 같은 이름의 메서드를 여러 개 만들 수 있습니다.이것을 오버로딩(overloading)이라고 합니다. 오버로딩(Overloading)이란?한 클래스 내에서 이름이 같지만, '매개변수(parameter)'가 다른 메서드를 여러 개 정의하는 것입니다.즉, 자바는 메서드의 이름뿐만 아니라 매개변수의 개수나 타입을 가지고 어떤 메서드인지 구별합니다. 오버로딩의 성립 조건자바에서 오버로딩을 인정받으려면 아래 세 가지 조건을 만족해야 합니다.① 이름이 같아야 한다메서드 이름이 ..

Java 2025.06.19

인스턴스 변수와 클래스 변수(static)의 개념과 사용 원칙

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 인스턴스 변수란?정의인스턴스 변수는 클래스 영역에 선언됩니다.인스턴스가 생성될 때 비로소 메모리에 할당됩니다.인스턴스마다 서로 다른 저장공간을 갖습니다.특징인스턴스마다 다른 값을 가져야 할 때 사용합니다.예: 학생 객체마다 이름, 나이가 다르기 때문에 → name, age는 인스턴스 변수로 선언.사용 조건반드시 인스턴스를 생성한 후에 접근 가능.예: Student s1 = new Student();s1.name = "Alice"; // 인스턴스 생성 후 사용 가능 클래스 변수 (static 변수)정의인스턴스 변수 앞에 static 키워드를 붙이면 클래스 변수입니다.클래스가 메모리에 올라갈 때 자동으로 생성됩니다. → 인스턴스 생성과 무관하게 사용 ..

Java 2025.06.19

String 클래스

자바의 정석[기초편]으로 공부한 내용을 정리한 글입니다. 문자열(String)이란?먼저, 문자열이란 문자(Character)를 여러 개 나열한 것입니다.예: "Java"는 J, a, v, a라는 4개의 문자가 연결된 것입니다. 문자열을 저장할 때 쓰는 두 가지 방법자바에서 문자열을 저장할 수 있는 방식에는 두 가지가 있습니다:char 배열문자를 하나씩 배열에 저장하는 방식.기본형 데이터 배열입니다.C 언어에서 주로 사용하던 방식입니다.String 클래스자바에서 문자열을 저장하고 처리할 때 사용하는 참조형(객체) 데이터 타입입니다.char 배열과 관련된 다양한 기능(메서드)이 포함된 클래스입니다. 왜 자바에서는 char[] 대신 String을 쓰는가?자바는 객체지향 언어이기 때문에, 단순히 데이터를 저장하..

Java 2025.06.18