물음표 살인마의 개발블로그

전체 글 852

추상 클래스

추상 클래스(abstract class) 구현하기 추상 클래스란? 구현 코드 없이 메서드의 선언만 있는 추상 메서드(abstract method)를 포함한 클래스 메서드 선언(declaration) : 반환타입, 메서드 이름, 매개변수로 구성 메서드 정의(definition) : 메서드 구현(implementation)과 동일한 의미 구현부(body) 를 가짐 ({ }) 예) int add(int x, int y); // 선언 int add(int x, int y){ } // 구현부가 있음, 추상 메서드 아님 abstract 예약어를 사용 추상 클래스는 new 할 수 없음 ( 인스턴스화 할 수 없음 ) 추상 클래스 구현하기 메서드에 구현 코드가 없으면 abstract 로 선언 abstract로 선언된 메..

객체 지향 2022.09.29

다운 캐스팅과 instanceof

다운 캐스팅(downcasting) 업캐스팅된 클래스를 다시 원래의 타입으로 형 변환 하위 클래스로의 형 변환은 명시적으로 해야 함 Customer vc = new VIPCustomer(); //묵시적 VIPCustomer vCustomer = (VIPCustomer)vc; //명시적 instanceof를 이용하여 인스턴스의 형 체크 원래 인스턴스의 형이 맞는지 여부를 체크하는 키워드 맞으면 true 아니면 false를 반환 함 AnimalTest.java public void testDownCasting(ArrayList list) { for(int i =0; i

객체 지향 2022.09.29

다형성과 다형성을 사용하는 이유

다형성(polymorphism) 이란? 하나의 코드가 여러 자료형으로 구현되어 실행되는 것 같은 코드에서 여러 다른 실행 결과가 나옴 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나임 다형성을 잘 활용하면 유연하고 확장성있고, 유지보수가 편리한 프로그램을 만들수 있음 다형성의 예 class Animal{ public void move() { System.out.println("동물이 움직입니다."); } public void eating() { } } class Human extends Animal{ public void move() { System.out.println("사람이 두발로 걷습니다."); } public void readBooks() { System.out.printl..

객체 지향 2022.09.28

메서드 재정의와 가상 메서드 원리

하위 클래스에서 메서드 재정의 하기 오버라이딩(overriding) : 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있음 VIPCustomer 클래스의 calcPrice()는 할인율이 적용되지 않음 재정의 하여 구현해야 함 VIPCustomer.java @Override public int calcPrice(int price) { bonusPoint += price * bonusRatio; return price - (int)(price * salesRatio); } @overriding 애노테이션 (annotation) 애노테이션은 원래 주석이라는 의미 컴파일러에게 특별한 정보를 제공해주는 역할 @over..

객체 지향 2022.09.28

상속에서 클래스 생성 과정과 형변환

하위 클래스가 생성 되는 과정 하위 클래스를 생성하면 상위 클래스가 먼저 생성 됨 new VIPCustomer()를 호출하면 Customer()가 먼저 호출 됨 클래스가 상속 받은 경우 하위 클래스의 생성자에서는 반드시 상위 클래스의 생성자를 호출 함 Customer.java public Customer() { customerGrade = "SILVER"; bonusRatio = 0.01; System.out.println("Customer() 생성자 호출"); } VIPCustomer.java public VIPCustomer() { customerGrade = "VIP"; bonusRatio = 0.05; salesRatio = 0.1; System.out.println("VIPCustomer() 생..

객체 지향 2022.09.28

객체 간의 상속

클래스 상속 새로운 클래스를 정의 할 때 이미 구현된 클래스를 상속(inheritance) 받아서 속성이나 기능을 확장하여 클래스를 구현함 이미 구현된 클래스보다 더 구체적인 기능을 가진 클래스를 구현해야 할때 기존 클래스를 상속함 상속하는 클래스 : 상위 클래스, parent class, base class, super class 상속받는 클래스 : 하위 클래스, child class, derived class, subclass 상속의 문법 class B extends A{ } extends 키워드 뒤에는 단 하나의 클래스만 올 수 있음 자바는 단일 상속(single inheritance)만을 지원함 상속을 구현 하는 경우 상위 클래스는 하위 클래스 보다 더 일반적인 개념과 기능을 가짐 하위 클래스는 ..

객체 지향 2022.09.28