2025/04 27

객체지향 PART 2 - 상속

상속(Inheritance) 이란? 클래스간의 관계를 부모(상위), 자식(하위) 로 바라보는 개념입니다.이 구조를 통해 상속에서는 재사용성, 확장 이 가능합니다.(중요한 키워드 입니다.)→ 물려받은 속성과 기능은 자식 클래스에서 재사용할 수도 있고, 확장할수도 있습니다.extends 키워드를 사용해서 상속관계를 구현합니다.부모의 속성과 기능을 자식이 자연스럽게 물려받는다라고 생각하면 이해하기 쉽습니다.상속을 통해 코드 중복을 줄이고 유지보수성을 높일 수 있습니다.추상화, 다형성을 구현하는데 잘 활용됩니다. 다음 수업에서 더 자세히 다룰 예정입니다. 재사용성상속의 첫 번째 장점 - 재사용성을 살펴봅시다.상속의 장점은 부모 클래스의 내용을 물려받아 그대로 재사용 할 수 있습니다.public class Par..

끄적모음 2025.04.15

객체지향 PART 1 - 캡슐화(접근제어자)

객체지향의 4가지 특징 PART 1캡슐화 - 데이터의 보호상속 - 재사용성과 확장추상화 - 데이터의 계층적 표현다형성 - 객체지향의 꽃캡슐화란?객체의 정보를 외부에서 직접 접근하지 못하게 보호하는 개념입니다.캡슐처럼 감싸서 내부를 보호하고 외부로부터 내용물을 숨기고 있는 모습에서 유래됐습니다.클래스 혹은 객체의 캡슐화는 접근제어자 를 통해서 구현할 수 있습니다. 캡슐화가 왜 필요할까?예를 들어, 누군가가 여러분의 이름이나 나이를 마음대로 변경할 수 있다면 어떨까요?가문의 비밀처럼 외부에 노출하고 싶지 않은 정보가 있을 수도 있습니다.캡슐화를 통해 이러한 정보를 보호하고 필요한 경우에만 안전하게 접근할 수 있도록 합니다.캡슐화를 구현하기 위해서는 접근제어자 를 이해해야합니다. 접근제어자 (Access Mo..

끄적모음 2025.04.15

인터페이스 - 표준화의 시작

인터페이스란?인터페이스는 설계 표준입니다.클래스가 따라야할 최소한의 공통 규칙을 정의하는 역할을 합니다.인터페이스를 사용하는 이유모든 설계에 **표준**이 있는 이유와 똑같습니다.개발자마다 서로 다른 방식으로 메서드를 만든다면 일관성이 깨질 수 있습니다.인터페이스를 활용해서 최소한의 규격을 정의합니다.세부 구현은 각 클래스에 맡깁니다.일관성을 유지하면서 클래스가 고유한 특색을 확장할 수 있도록 돕습니다. 인터페이스 적용인터페이스는 모든 클래스가 지켜야 할 최소한의 규칙을 정의합니다.클래스에서 implements 키워드로 인터페이스를 활용할 수 있습니다.인터페이스를 구현한 클래스를 구현체 라고 합니다.interface Car { void drive(); void stop();} 구현class L..

끄적모음 2025.04.15

Final - 변하지 않는 값

final의 용도 1. 변수는 변경이 불가능하게 만듭니다.final int a = 100;a = 200; // ❌ 오류 발생! 2. 클래스는 상속할 수 없게 만듭니다.final class Animal { void sound() { System.out.println("Animal sound!"); }}// class Dog extends Animal {} // ❌ 오류! final 클래스는 상속할 수 없음 3. 메서드는 수정할 수 없게 만듭니다.(오버라이딩 불가)class Parent { final void show() { System.out.println("Hello from Parent"); }}class Child extends Parent { @O..

끄적모음 2025.04.15

Static - 클래스가 공유하는 공간

Static 이란?static 키워드는 모든 객체가 함께 사용하는 변수나 메서드를 만들때 사용됩니다.객체(인스턴스)를 만들지 않아도 클래스 이름만으로 바로 사용할 수 있습니다.모든 객체가 같은 값을 공유합니다.→ 공용 게시판이라고 생각하시면 이해하기 쉽습니다.static 변수와 메서드는 한 번만 생성되고 Method Area(메서드영역) 에 저장됩니다.Static 활용static 키워드는 변수, 메서드에 붙일 수 있습니다.static 키워드로 선언된 변수와 메서드는 MethodArea 에 저장됩니다.각 **객체(인스턴스)**는 클래스영역에 저장된 데이터를 활용할 수 있습니다. class Person { // ✅ static 변수 static int population = 0; // ✅ stat..

끄적모음 2025.04.15

레퍼 클래스

1. 래퍼 클래스란기본 자료형을 객체로 감싸는 클래스 2. 기본형(Primitive Type)의 종류 3. 참조형변수에 객체가 담기면 해당 변수를 참조형변수라고 말합니다.참조형 변수는 데이터가 저장된 메모리 주소를 가리킵니다. → Heap 메모리 주소객체 데이터는 Heap 영역에 저장되어 있기 때문입니다.객체, 배열등이 참조형에 속합니다.Person personA = new Person("Steve"); // ✅ 객체가 담긴 personA 는 참조형 변수입니다.Syetem.out.println(personA.name);System.out.println(personA); // ✅ 출력하면 @123 메모리의 주소값이 출력됩니다. int[] arr = {1, 2, 3, 4}; // ✅ 배열이 담긴 arr ..

끄적모음 2025.04.15

JVM 메모리

Method Area - 클래스 정보 저장공간 ( 도서관 비유 )Stack Area - 메서드 실행 시 사용되는 공간(지역변수, 호출정보 등) ( 접시 쌓기 비유 )Heap Area - 객체가 생성되어 저장되는 공간 ( 풍선 비유 ) 1. JVM 메모리 구조 2. 코드 흐름 살펴보기 https://cscircles.cemc.uwaterloo.ca/java_visualize/ Java VisualizerWrite your Java code here: args: +command-line argument stdin (also visualizes consumption of StdIn) x cscircles.cemc.uwaterloo.capublic class Main { static class..

끄적모음 2025.04.15

클래스와 객체

클래스란? 객체를 만들때 필요한 청사진(설계도) 그럼 객체란? 우리 주변에서 볼 수 있는 사물들이 객체 이것을 코드로 한번 살펴보자 Person.class - 사람이라는 객체를 만들어서 살펴보자 public class Person() { ...} Person 이라는 클래스를 만들었다.public class Main { public static void main(String[] args) { Person personA = new Person(); // ✅ 첫번째 객체 생성 Person personB = new Person(); // ✅ 두번째 객체 생성 }} 객체를 만들때 new 라는 키워드를 사용한다. 객체를 만드는 과정을 인스턴스화 라고 표현한다. 인스턴스화가 되면 Java 메모리 상에 객체..

끄적모음 2025.04.15

자바 공부 5

📗 배울 내용메서드 시작메서드 사용메서드 정의반환 타입메서드 호출과 값 전달메서드와 형변환메서드 오버로드문제 풀이흑흑흑 요약 정리1. 메서드 시작필요할 때마다 호출해서 사용할 수 있는 함수2. 메서드 사용package method;public class Method1Ref { public static void main(String[] args) { int sum1 = add(5, 10); // 호출 System.out.println("sum1 = " + sum1); int sum2 = add(15, 20); System.out.println("sum2 = " + sum2); } // add 메서드 public static int ..

끄적모음 2025.04.11

요약 정리 - 자바 5

📗 배울 내용배열시작배열의 선언과 생성배열 사용배열 리펙토링2차원 배열 - 시작2차원 배열 - 리팩토링12차원 배열 - 리팩토링2향상된 for문9991. 배열시작배열이 필요한 이유 public class Array1 { public static void main(String[] args) { int student1 = 90; int student2 = 80; int student3 = 70; int student4 = 50; int student5 = 40; int student6 = 40; System.out.println("학생1 점수 : "+ student1); System.out.printl..

끄적모음 2025.04.10