전체 글 97

24. 클래스의 형 변환

자바에서의 형 변환에는 변수& 자료형의 자동 형 변환(묵시적 형 변환),과 강제 형 변환(명시적 형 변환)이 있다 클래스의 관계에서도 형 변환이 가능하다클래스의 형 변환에는 자동 타입 변환(Upcasting), 강제 타입 변환(Downcasting)이 있으며 자료형의 변환보다 가능한 범위가 좁음>>클래스의 형 변환은 상속 관계에 있는 클래스 사이에서만 변환되기 때문 상속 관계의 클래스들 예시)class Parent { void displayInfo() { System.out.println("부모 클래스 입니다"); }}class Child extends Parent { @Override void displayInfo() { System.out.println("자식 클래스입니다, 재정의"); } voi..

java 2025.02.25

실습) 도서 관리 시스템

// 도서 관리 시스템// 책의 정보를 저장, 책의 상태(대여 가능 여부) 확인, 책의 정보 출력// Book 클래스// 속성: title(String, 불변성), author(String, 불변성), isAvailable(boolean)// 메소드: borrowBook(), returnBook(), displayInfo()// 생성자: 매개변수 - title, author class Book{ private final String title; private final String author; private boolean isAvailable = true;// 책의 초기 상태: 대여 가능 Book(String title, String author) { this.title = title; this...

java 2025.02.25

23. final

final 키워드변수, 메소드, 클래스에서 사용 가능함변수: 값을 변경할 수 없는 상수로 선언함메소드: 자식 클래스에서 재정의(오버라이드)할 수 없는 메소드 선언클래스: 상속 될 수 없는 클래스 선언 변수와 메소드 예시class MyFinalClass { // final 변수 // 상수를 지정하는 키워드 // 선언과 동시에 '초기화', 재할당 불가능 // UPPER_SNAKE_CASE(전체 키워드를 대문자로 작성) final int FINAL_VARIABLE = 30; // final 메소드 // 자식 클래스에서 오버라이드(재정의)할 수 없는 메소드를 의미 // [접근제어자] final 반환타입 메소드명() {} public final void myMethod() { System.out.println..

java 2025.02.25

22. 캡슐화

캡슐화(Encapsulation)OOP (Object-Oriented Programming - 객체지향적프로그래밍)에서 데이터와 해당 데이터를 처리하는 메소드(함수)를 하나로 묶는 것객체 내부의 구현을 숨기고, 외부에서는 제공된 메소드를 통해서만 접근하도록 설정한다데이터를 보호하고, 유지보수성을 향상하며, 사용자 편의성을 증대시킨다 getter와 setter 메소드캡슐화 된 데이터에 안전하게 접근하고 수정할 수 있도록 하는 기능데이터의 무결성을 유지하고 정보를 은닉함 private 사용하기데이터 보호/ 유지보수성 향상을 위해 데이터 필드(속성)은 private로 선언한다데이터에 접근하거나 수정할때는 getter & setter를 사용한다 getter: 객체의 특정 필드 값을 가져오는(읽는) 메소드get필..

java 2025.02.25

21. 접근 제어자

접근 제어자(modifire)또는 접근 제한자클래스, 변수, 메소드의 접근 범위를 제어외부로부터 데이터를 보호, 객체간의 의존성을 최소화하는 역할코드의 보안성을 향상, 캡슐화를 구현함 접근 제어자 종류public, default, protected, private생략하면 자동으로 default를 지정한다 접근 제어자의 범위public > protected > default > private private:  같은 클래스 내에서만 접근 가능class PrivateClass { private int myField; private void myMethod() { System.out.println(myField);// PrivateClass 내부에서만 사용 가능 }}  default: 같은 패키지 내에서 접근..

java 2025.02.25

20. 오버라이딩

오버라이딩(Overriding)자식 클래스가 부모 클래스에서 상속받은 '메소드'를 자신의 상황에 맞게 '재정의'하는것상속 관계에 있는 클래스들 사이에서 사용함부모 클래스의 동작을 자식 클래스에서 변경하거나 확장할때 사용 예시)class ParentClass{ void exercise() { System.out.println("달리기를 잘합니다."); }}class ChildClass extends ParentClass{// void exercise() {// System.out.println("달리기를 잘합니다.");// } @Override void exercise() { System.out.println("달리기도 잘하고 피구도 잘합니다"); }}@Override : 자바에서 제공하는 코드 어노..

java 2025.02.25

19. 상속

상속(Inheritance)한 클래스의 속성과 메소드를 다른 클래스가 물려받는 것기존의 클래스를 재사용해 새로운 클래스를 작성코드의 재사용성, 중복 제거(프로그램의 생산성 향상) 상속 구형 방법extends (확장하다) 키워드를 사용하여 구현class 자식클래스명 extends 부모클래스 {}class Parent {} // 부모 클래스(기존 클래스)class Child extends Parent {} // 자식 클래스(새로운 클래스) 상속해주는 클래스: 조상, 부모, 상위, 기반, 슈퍼 클래스상속받는 클래스: 자손, 자식, 하위, 파생, 서브 클래스 동물 클래스class Animal{ String name;// 동물의 이름}class Dog extends Animal{ // 부모 클래스의 속성과 메소드..

java 2025.02.25

18. 생성자

생성자(Constructor)객체(인스턴스)가 생성될 때 호출되는 '인스턴스 초기화 메소드' 생성자 조건클래스명과 동일한 이름을 사용, 리턴값이 없는 메소드 형식(void 타입이 생략됨) 컴파일러가 제공하는 기본 생성자클래스에 생성자가 하나도 없을때 자동 생성되는 빈 생성자매개변수가 없으며 아무런 작업도 하지 않음(구현부 안에 코드가 없음)class Example1 { int value; // 기본 생성자 생략}class Example2 { int value; // 사용자 정의 생성자 // 컴파일러가 자동으로 기본 생성자를 제거 Example2(int value) { this.value = value; } // 빈 생성자의 경우 직접적인 명시도 가능 Example2() {}} 사용자 정의 생성자 만..

java 2025.02.25

실습) 오버로딩 연습

// 음식점 클래스// 다양한 방법으로 음식을 주문받는 매소드class Restautant { // 메소드 정의: placeOrder() // 메뉴 이름 (String dish) // 메뉴 이름 * 수량 제공 (int quantity) // 메뉴 이름 * 특별 요청 사항 (String specialRequests) // 메뉴 이름 * 수량 제공 * 특별 요청 사항 void placeOrder(String dish) {System.out.println(dish);} void placeOrder(String dish, int quantity) { System.out.println(dish + " * " + quantity); } void placeOrder(String dish, String spec..

java 2025.02.25