IT29 2. 불변 객체 - 기본형과 참조형의 공유 / 공유 참조와 사이드 이펙트 / 불변 객체(도입) / 불변 객체(예제) / 불변 객체(값 변경) / 문제와 풀이 2-1. 기본형과 참조형의 공유자바의 데이터 타입 = 기본형(Primitive Type)과 참조형(Reference Type)기본형: 하나의 값을 여러 변수에서 절대 공유하지 않음 => 값을 복사참조형: 하나의 객체를 참조값을 통해 여러 변수에서 공유 가능 => 참조값을 복사(객체/인스턴스를 공유)PrimitiveMain.java (기본형 예제)package lang.immutable.address;public class PrimitiveMain { public static void main(String[] args) { // 기본형은 절대로 같은 값을 공유하지 않음 int a = 10; int b = a; // a -> b, 값 복사 후 대입 Sy.. 2025. 6. 18. 1. Object클래스 - 프로젝트 환경 구성 / java.lang 패키지 소개 / Object (클래스) / Object (다형성) / Object (배열) / toString() / Object와 OCP / equals() (동일성과 동등성) / equals() (구현) / 문제와 풀이 1-1. 프로젝트 환경 구성Project Name: java-mid11-2. java.lang 패키지 소개java.lang자바가 기본으로 제공하는 라이브러리(클래스 모음) 중 가장 기본이 되는 라이브러리(=패키지)lang은 Language(언어)의 줄임말자바 언어를 이루는 가장 기본이 되는 클래스들을 보관하는 패키지java.lang 패키지의 대표적인 클래스들★★ Object: 모든 자바 객체의 부모 클래스String: 문자열Integer, Long, Double: 래퍼 타입, 기본형 데이터 타입을 객체로 만든 것Class: 클래스 메타 정보System: 시스템과 관련된 기본 기능들을 제공LangMain.java ( import 생략 가능 )java.lang 패키지는 모든 자바 애플리케이션에 자동으로 im.. 2025. 5. 29. 12. 다형성과 설계 - 좋은 객체 지향 프로그래밍? / 다형성(역할과 구현 예제 1~3) / OCP 원칙 / 문제와 풀이 12-1. 좋은 객체 지향 프로그래밍이란?1) 객체 지향 특징추상화캡슐화상속다형성2) 객체 지향 프로그래밍컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나여러개의 독립된 단위 '객체'들의 모임으로 파악하고자 하는것각각의 객체는 메세지를 주고받고, 데이터를 처리한다 (협력)프로그램을 유연하고 변경이 용이하게 만들기에대규모 소프트웨어 개발에 많이 사용3) 유연하고, 변경이 용이레고 블럭 조립 하듯키보드, 마우스 갈아 끼우듯컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법이를 가능하게 만드는 => 다형성 (Polymorphism) 4) 다형성 (Polymorphism)(다형성을 실세계 비유)실세계와 객체 지향을 1:1로 매칭 안함그래도 실세계의 비유로 이해하기에 좋음역할과 구현으로 세상을 구분5.. 2025. 4. 27. 11. 다형성2 - 다형성 활용 1~3 / 추상 클래스 1~2 / 인터페이스 / 인터페이스(다중 구현) / 클래스와 인터페이스 활용 11-1. 다형성 활용1다형성을 왜 사용하는지 장점을 알아보기 위해 다형성을 사용하지 않는 프로그램 개발과이후, 다형성을 사용한 코드 변경(동물 소리 문제 - 다형성 사용 안함)poly.ex1.Dog.javapackage poly.ex1;public class Dog { public void sound() { System.out.println("멍멍"); }}poly.ex1.Cat.javapackage poly.ex1;public class Cat { public void sound() { System.out.println("액옹"); }}poly.ex1.Cow.javapackage poly.ex1;public class Cow { public void sound() { System.ou.. 2025. 4. 14. 10. 다형성1 - 시작 / 다형성과 캐스팅 / 캐스팅의 종류 / 다운캐스팅과 주의점 / instanceof / 다형성과 메서드 오버라이딩 10-1. 다형성 시작객체지향 프로그래밍의 대표적 특징: 캡슐화, 상속, 다형성 다형성(Polymorphism)'다양한 형태', '여러 형태' 한 객체가 여러 타입의 객체로 취급될 수 있는 능력하나의 객체는 하나의 타입으로 고정되어 있는데,다형성을 사용하면 하나의 객체가 다른 타입으로 사용될 수 있다는 뜻2가지 핵심이론다형적 참조 (여러 형태로 참조)메서드 오버라이딩poly.basic.Parent.java (다형적 참조)package poly.basic;public class Parent { public void parentMethod() { System.out.println("Parent.parentMethod"); }}poly.basic.Child.javapackage poly.. 2025. 4. 6. 9. 상속 - 시작 / 상속 관계 / 상속과 메모리 구조 / 상속과 기능 추가 / 상속과 메서드 오버라이딩 / 상속과 접근 제어 / super(부모 참조) / super(생성자) / 문제와 풀이 / 클래스와 메서드에 사용되는 final 9-1. 상속 시작ElectricCar.javapackage extends1.ex1;public class ElectricCar { public void move() { System.out.println("차를 이동합니다."); } public void charge() { System.out.println("충전합니다."); }}GasCar.javapackage extends1.ex1;public class GasCar { public void move() { System.out.println("차를 이동합니다."); } public void fillUp() { System.out.println("기름을 주유합니다.".. 2025. 3. 3. 8. final - final 변수와 상수1~2 / final 변수와 참조 / 정리 8-1. final 변수와 상수1FinalLocalMain.java (지역변수)package final1;public class FinalLocalMain { public static void main(String[] args) { // final 지역 변수1 final int data1; data1 = 10; // 최초 한번만 할당 가능 //data1 = 20; // 컴파일 오류 // final 지역 변수2 final int data2 = 10; //data2 = 20; // 컴파일 오류 method(10); } // final 매개변수 static void method(final .. 2025. 2. 19. 7. 자바 메모리 구조와 static - 자바 메모리 구조 / 스택과 큐 자료 구조 / 스택 영역 / 스택 영역과 힙 영역 / static 변수1~3 / static 메서드1~3 / 문제와 풀이 7-1. 자바 메모리 구조자바의 메모리 구조는 크게 메서드 영역, 스택 영역, 힙 영역 3개로 나뉨메서드 영역: 클래스 정보를 보관. 이 클래스 정보가 붕어빵 틀이다.스택 영역: 실제 프로그램이 실행되는 영역. 메서드를 실행할 때 마다 하나씩 쌓인다.힙 영역: 객체(인스턴스)가 생성되는 영역. new 명령어를 사용하면 이 영역을 사용. 붕어빵 틀로부터 생성된 붕어빵이 존재하는 공간. 참고로 배열도 이 영역에 생성된다. 메서드 영역(Method Area): 메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리. 이 영역은 프로그램의 모든 영역에서 공유.클래스 정보: 클래스의 실행 코드(바이트 코드), 필드, 메서드와 생성자 코드 등 모든 실행 코드가 존재.static 영역: static 변수들을 .. 2025. 2. 15. 6. 접근 제어자 - 접근 제어자 이해1~2 / 접근 제어자 종류 / 접근 제어자 사용(필드, 메서드) / 접근 제어자 사용(클래스 레벨) / 캡슐화 / 문제와 풀이 6-1. 접근 제어자 이해1접근 제어자(access modifier)를 사용하면,해당 클래스 외부에서 특정 필드나 메서드에 접근하는 것을 허용하거나 제한 가능 스피커에 들어가는 소프트웨어를 개발할 때, 스피커의 음량이 100을 넘어가면 부품들이 고장난다.Speaker.java (volume 100 제한)package access;public class Speaker { int volume; Speaker(int volume) { this.volume = volume; } void volumeUp() { if (volume >= 100) { System.out.println("음량을 증가할 수 없습니다. 최대 음량입니다."); .. 2025. 2. 11. 이전 1 2 3 4 다음