java/chatgpt 23

[Java/ChatGPT] Day 13: 사용자 정의 예외 + throw, throws

[ 학습 목표 ]자바에서 예외를 직접 정의하고 처리하는 방법을 이해한다.throw, throws 키워드의 역할과 차이점을 명확히 구분한다.예외 상황을 만들고 처리하는 실습을 통해 안정적인 코드를 작성한다.[ 이론 ]1. 사용자 정의 예외란?자바가 제공하는 기본 예외 클래스 외에도, 직접 새로운 예외 클래스를 정의해서 프로그램에 맞는 예외 상황을 만들 수 있다. 2. 사용자 정의 예외 생성 방법public class MyException extends Exception { public MyException(String message) { super(message); // 부모(Exception) 클래스 생성자 호출 }} 3. thorw 키워드예외 객체를 강제로 발생시킬 때 사용throw new..

[Java/ChatGPT] Day 12: 예외 처리 (Exception Handling)

[ 학습 목표 ]프로그램 실행 중에 발생할 수 있는 오류를 안정적으로 처리하는 법을 배운다.[ 이론 ]1. 예외(Exception)란?프로그램 실행 중 발생하는 비정상적인 상황을 의미함 2. 예외 예시0으로 나누기배열 인덱스 범위 초과null을 참조하려고 할 때파일을 못 찾았을 때int[] arr = new int[3];System.out.println(arr[10]); // ArrayIndexOutOfBoundsException 발생 3. 예외 기본 문법try-catch 구조try { // 예외가 발생할 수 있는 코드} catch (예외타입 변수명) { // 예외가 발생했을 때 실행할 코드} 4. 예외 예시 1: 0으로 나누기public class Example1 { public sta..

[Java/ChatGPT] Day 11: 추상 클래스와 인터페이스(Abstrac Class & Interface)

[ 학습목표 ]추상 클래스와 인터페이스의 개념과 차이를 이해한다abstract 키워드를 사용한 클래스를 설계할 수 있다인터페이스를 사용해 유연한 설계를 구현할 수 있다[ 이론 ]1. 추상 클래스 (abstract class)미완성 설계도 역할. 자식 클래스가 반드시 구현해야 할 메서드를 포함함 2. 추상 클래스 특징abstract 키워드로 선언인스턴스를 만들 수 없음추상 메서드 포함 가능: abstract void methodname();일반 메서드와 필드도 포함 가능 3. 추상 클래스 예시abstract class Animal { String name; void breathe() { System.out.println("숨을 쉽니다."); } abstract void sound(); // ..

[Java/ChatGPT] Day 10: 다형성(Polymorphism)과 업캐스팅/다운캐스팅

[ 학습목표 ]다형성의 개념을 이해한다.업캐스팅과 다운캐스팅의 차이를 이해하고 사용할 수 있다.부모 타입 참조 변수로 자식 객체를 다루는 패턴에 익숙해진다.[ 이론 ]1. 다형성이란?하나의 객체가 여러 형태로 동작할 수 있는 성질 2. 다형성 특징자식 객체를 부모 타입으로 참조할 수 있음오버라이딩 메서드가 핵심실행 시점에 어떤 메서드가 호출될지는 객체의 실제 타입에 따라 결정됨 3. 업캐스팅 Upcasting부모클래스 변수 = new 자식클래스(); // 자동 형변환자식이 부모처럼 행동오버라이딩된 메서드는 자식 것이 호출됨 4. 업캐스팅 사용 이유/목적/예시다형성을 활용하기 위해: 여러 하위 클래스를 같은 상위 클래스 타입으로 다룰 수 있음.코드를 유연하게 설계할 수 있음: 예를 들어 매개변수나 반환 타..

[Java/ChatGPT] Day 9: 메서드 오버라이딩(Method Overriding)과 super 키워드

[ 학습 목표 ]메서드 오버라이딩 개념을 이해한다.부모 클래스의 메서드를 자식 클래스에서 재정의하는 방법을 익힌다.super 키워드를 통해 부모 생성자 또는 메서드에 접근하는 방법을 배운다.[ 이론 ]1. 메서드 오버라이딩이란?부모 클래스의 메서드를 자식 클래스에서 재정의(덮어쓰기)하는 것. 2. 오버라이딩 조건메서드 이름, 매개변수, 반환 타입 모두 동일접근 제어자는 같거나 더 넓어야 함@Override 어노테이션을 붙여서 오버라이딩임을 명확히 표시(권장) 3. Super 키워드란?부모 클래스의 필드, 메서드, 생성자에 접근할 때 사용super.메서드(); // 부모의 메서드 호출super(); // 부모의 생성자 호출 (생성자 안에서만 사용 가능) 4. 오버라이딩과 super 예시public clas..

[Java/ChatGPT] Day 8: 상속(Inheritance)의 개념과 기본 사용법

[ 학습 목표 ] 상속의 개념을 정확히 이해하기부모 클래스와 자식 클래스의 관계를 코드로 표현할 수 있다extends 키워드를 통해 코드 재사용이 가능하다는 것을 체험한다 [ 이론 ]1. 상속이란?기존 클래스(부모)의 속성과 기능을 새로운 클래스(자식)가 물려받는 것 2. 상속의 특징중복 코드 방지코드의 재사용성과 유지보수성 향상상속받는 클래스는 부모의 필드, 메서드를 그대로 사용할 수 있음 3. 기본 문법class 부모클래스 { 필드; 메서드;}class 자식클래스 extends 부모클래스 { 자식만의 필드; 자식만의 메서드;} 4. 상속 예시public class Person { String name; int age; void introduce() { System.out.printl..

[Java/ChatGPT] Day 7: 생성자 오버로딩 (Constructor Overloading)

[ 학습목표 ]생성자 오버로딩의 개념 이해다양한 매개변수를 받는 생성자의 정의 및 활용생성자 오버로딩을 통해 유연한 객체 생성 능력 기르기[ 이론 ]1. 생성자란?객체가 생성될 때 자동으로 호출되는 메서드클래스 이름과 같고 return 타입이 없음 2. 생성자 오버로딩이란?하나의 클래스에 매개변수가 다른 여러 생성자를 정의하는 것 3. 생성자 오버로딩 규칙매개변수의 개수 또는 타입이 달라야 함Java는 인자에 따라 적절한 생성자 자동 호출 4. 생성자 오버로딩 예시public class Book { String title; String author; // 생성자 1 Book() { this.title = "제목 없음"; this.author = "저자 없음"; } // 생성자 2 ..

[Java/ChatGPT] Day 6: static 키워드와 클래스 변수/메서드 이해하기

[ 학습목표 ]static 키워드의 의미와 역할 이해인스턴스 변수 vs 클래스 변수의 차이 학습static 메서드의 특징과 사용법 익히기 [ 이론 ]1. static 키워드란?클래스에 속한 변수, 메서드를 의미함객체를 만들지 않고도 사용할 수 있음 2. 인스턴스 변수와 클래스 변수 차이인스턴스 변수: static 없이 선언. 객체마다 개별 저장.클래스 변수: 클래스에 하나만 존재. 모든 인스턴스가 공유 3. static을 사용하는 이유공용 데이터 공유: 모든 인스턴스가 같은 값을 가져야 할 때 (예: 상수, 카운터)유틸리티 메서드 작성: 객체와 무관한 기능 (예: Math.pow(), Collections.sort())클래스 초기화: static 블록을 이용해 한 번만 초기화가 필요할 때 => class..

[Java/ChatGPT] Day 5: 클래스의 캡슐화 개념과 Getter/Setter 메서드

[ 학습목표 ]캡슐화(Encapsulation)의 개념을 익히고, 데이터를 보호하는 방식 학습Getter/Setter 메서드를 통해 클래스 내부 데이터에 안전하게 접근private, public 키워드의 역할과 사용법 숙지 [ 이론 ]1. 캡슐화(Encapsulation)클래스 내부의 데이터를 숨기고, 메서드를 통해 접근하게 만드는 객체지향의 핵심 원칙 2. 관련 키워드private: 외부에서 접근 불가 (정보 은닉)public: 외부에서 접근 가능getXxx(): 필드 값을 안전하게 가져오는 메서드setXxx(): 필드 값을 검증하고 설정하는 메서드 3. 왜 사용하는가?잘못된 값을 직접 넣는 실수를 방지할 수 있음유지보수와 보안성이 올라감유효성 검사 등을 setter에서 처리 가능 [ 실습 미션 ]✅ ..

[Java/ChatGPT] Day 4: 컬렉션(Collection)과 ArrayList 완전 정복

[ 학습 목표 ]컬렉션 기본 개념: 배열 vs 컬렉션 차이 이해ArrayList 사용법: 객체 추가, 삭제, 조회for-each 반복: 리스트 요소 출력간단한 프로젝트 만들기: 도서 목록 관리 기능 구현 [ 이론 ]1. 컬렉션이란?데이터를 담는 자료 구조의 집합이다.배열은 크기가 고정되어 있지만, 컬렉션은 크기 변경이 가능하다.자바의 대표 컬렉션:List: 순서 있음, 중복 허용 -> ArrayList, LinkedListset: 순서 없음, 중복 불가 -> HashSetMap: 키-값 쌍 -> HashMap 2. ArrayList 사용법import java.util.ArrayList;public class Main { public static void main(String[] args) { ..