본문 바로가기

전체 글211

[3주차] Java 중급 - 추상 클래스의 의미와 구현하는 방법 추상 클래스란? // 예시 int add(int x, int y); // 선언 이렇게 선언만 하면 추상 메서드임 int add(int x, int y) { } // 구현부가 있음, 추상 메서드 아님 구현 코드 없이 메서드의 선언만 있는 추상 메서드 (abstract method)를 포함한 클래스 메서드 선언 (declaration) : 반환타입, 메서드 이름, 매개변수로 구성 메서드 정의 (definition) : 메서드 구현 (implementation)과 동일한 의미 구현부(body)를 가짐({ }) abstract 예약어를 사용 추상 클래스는 new 할 수 없음 (인스턴스화 할 수 없음) 추가적으로 추상클래스의 반대는 concrete class (구체적 클래스)이다. 추상 클래스 구현하기 메서드에 .. 2023. 6. 25.
[3주차] Java 중급 - 다운 캐스팅과 instanceof 다운 캐스팅 (downcasting) Customer vc = new VIPCustomer(); // 묵시적 VIPCustomer vCustomer = (VIPCustomer) vc; // 명시적 업 캐스팅된 클래스를 다시 원래의 타입으로 형 변환 (원래의 인스턴스로 돌아오는 것) 하위 클래스로의 형 변환은 명시적으로 해야 함 instanceof를 이용하여 인스턴스의 형 체크 원래 인스턴스의 형이 맞는지 여부를 체크하는 키워드 맞으면 true 아니면 false 반환 instanceof 키워드의 역할은 원래 해당 인스턴스가 검사하려는 인스턴스의 타입이었는가를 확인 예) A instanceof B : A가 B타입의 인스턴스였는가? AnimalTest.java public void testDownCasting.. 2023. 6. 25.
[3주차] Java 중급 - 상속은 언제 사용할까 코드의 재사용과 관련해서 2가지 방법을 사용할 수 있다. IS-A 관계 (is a relationship : inheritance) 일반적인 (general) 개념과 구체적인 (specific) 개념과의 관계 상위 클래스 : 하위 클래스보다 일반적인 개념 (예 : Employee) 하위 클래스 : 상위 클래스보다 구체적인 개념들이 더해짐 (예 : Engineer, Manager … ) 상속은 클래스간의 결합도가 높은 설계 상위 클래스의 수정이 많은 하위 클래스에 영향을 미칠 수 있음 계층 구조가 복잡하거나 hierarchy가 높으면 좋지 않음 (상속의 depth가 깊은 경우) HAS-A 관계 (composition) 클래스가 다른 클래스를 포함하는 관계 (변수로 선언) 코드 재사용의 가장 일반적인 방법 .. 2023. 6. 25.
[3주차] Java 중급 - 다형성과 다형성을 사용하는 이유 다형성(polymorphism)이란? 하나의 코드가 여러 자료형으로 구현되어 실행되는 것 같은 코드에서 여러 다른 실행 결과가 나옴 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나임 다형성을 잘 활용하면 유연하고 확장성있고, 유지보수가 편리한 프로그램을 만들 수 있음 다형성의 예 package ch03; import java.util.ArrayList; class Animal{ public void move() { System.out.println("동물이 움직입니다."); } public void eating() { } } class Human extends Animal{ public void move() { System.out.println("사람이 두발로 걷습니다."); } p.. 2023. 6. 25.