java 69

26. 추상화(Abstract)

추상 클래스란?미완성된 설계도(클래스)=> 이것만으론 인스턴스를 생성할 수 없음>> 다른 클래스가 상속받아서 추상화된 부분을 완성해야 사용 가능 추상 클래스의 특징클래스 자체만으로 인스턴스 생성 불가반드시 하나 이상의 추상 메소드를 포함해야 함확장성 제공을 위해 사용 >> 자식 클래스가 공통된 기능을 공유 + 고유 기능을 구현하도록 강제함다중 상속은 불가능 >> 하나의 extends만 가능 메소드 오버라이딩과 추상 메소드추상 메소드: 반드시 자식 클래스에서 오버라이딩 해야됨(필수)일반 메소드: 필요시 오버라이딩 함(선택) 추상 클래스 구현법클래스 선언시 앞에 abstract 키워드 사용 추상 메소드란?메소드의 선언부만 존재하고 구현부가 없는 메소드자식 클래스가 상속할 때 해당 메소드를 반드시 구현하도록 ..

java 2025.02.27

25. 다형성 (Polymorphism)

다형성이란?많은 형태를 가질 수 있는 특성하나의 객체가 여러 타입의 인스턴스(객체)로 취급될 수 있는 특성상속, 메소드 오버라이드, 클래스 타입 변환 instanceof 연산자참조변수값 instanceof 타입(클래스명)해당 객체가 특정 클래스의 인스턴스인지, 또는 그 클래스를 상속받은 자식 클래스의 인스턴스인지 확인하고그 결과를 boolean값으로 반환한다 예시)클래스를 만들고 상속// instanceof: 운송수단class Vehicle{ void displayInfo() { System.out.println("운송수단입니다"); }}class Bus extends Vehicle{ @Override void displayInfo() { System.out.println("버스를 타고 갑니다"); ..

java 2025.02.27

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