JAVA 웹 개발 패키지 - 패스트캠퍼스/Chapter3 8

인터페이스 - 클래스 상속과 인터페이스 구현 함께 쓰기+복습예제

클래스 상속과 인터페이스 구현 함께 쓰기 실무에서 프레임워크나 오픈소스와 함께 연동되는 구현을 하게 되면 클래스 상속과 인터페이스의 구현을 같이 사용하는 경우가 많음 책이 순서대로 대여가 되는 도서관 구현 책을 보관하는 자료 구조가 Shelf에 구현됨 (ArrayList) Queue 인터페이스를 구현함 Shelf 클래스를 상속받고 Queue를 구현한다. Shelf class 구현 - 책을 보관하는 자료 구조 - ArrayList 방식으로 사용 Queue 인터페이스를 구현 Shlef 클래스를 상속받고 Queue 인터페이스를 구현한 - BookShelf 클래스 Test --- 이미 잘 만들어진 자기보다 좀 더 일반적인 클래스에서 상속을 받고 자기가 구현해야 할 기능이 선언되어있는 인터페이스를 구현하는 구도로..

인터페이스 - 메서드, 구현, 상속

상수 / 추상 메서드 별도 선언 없어도 상수 / 추상 메서드로 선언됨 디폴트 메서드 / 정적 메서드 / defalut 메서드 / static 메서드 private 메서드 private / private static 메서드 상수 모든 변수는 상수로 변환됨 public static final 별도의 선언 없어도 자동으로 double PI = 3.14; int ERROR = -999999999; 추상 메서드 모든 선언된 메서드는 추상 메서드 public abstract 별도의 선언 없어도 자동으로 디폴트 메서드 (자바 8 이후) 구현을 가지는 메서드, 인터페이스를 구현하는 클래스들에서 공통으로 사용할 수 있는 기본 메서드 default 키워드 사용 클래스가 implements 했을 때 사용할 수 있다. def..

인터페이스(interface)

인터페이스란? 모든 메서드가 추상 메서드로 선언됨 public abstract 모든 변수는 상수로 선언됨 public static final interface 인터페이스 이름{ public static final float pi = 3.14F; public void makeSomething(); } 아무것도 안쓴다고해도 public abstract, public static final 로 적용 자바 8부터 디폴트 메서드(default method)와 정적 메서드(static method) 기능의 제공으로 일부 구현 코드가 있음 인터페이스 정의와 구현 클래스가 인터페이스를 구현한다. Calculator ---> Calc 점선 화살표 Calc interface 생성 Calc - interface 구현한 Ca..

추상 클래스(abstract class) 와 템플릿 메서드 패턴

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

다운 캐스팅과 instanceof

다운 캐스팅(downcasting) 업 캐스팅된 클래스를 다시 원래의 타입으로 형 변환 하위 클래스로의 형 변환은 명시적으로 해야 함 Customer vc = new VIPCustomer(); //묵시적 VIPCustomer vCustomer = (VIPCustomer)vc; //명시적 명시적으로 할 때 직접적으로 변환 방법 X, instanceof를 이용하여 체크한 후 변환 O instanceof를 이용하여 인스턴스의 형 체크 원래 인스턴스의 형이 맞는지 여부를 체크하는 키워드 맞으면 true 아니면 false를 반환함 44번 라인 - 오류 표시는 변수 vc 2번 정의했다는 오류 40번 라인 - 컴파일 오류는 안남, 하지만 작동 시 오류 실습 ---- arraylist로 입력된 값들 불러다가 insta..

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

다형성(polymorphism) 이란? 하나의 코드가 여러 자료형으로 구현되어 실행되는 것 같은 코드에서 여러 다른 실행 결과가 나옴 - 코드는 1개인데 결과 값이 여러 다른 값으로 정보은닉, 상속과 더불어 객체지향 프로그래밍의 가장 큰 특징 중 하나임 다형성을 잘 활용하면 유연하고 확장성 있고, 유지보수가 편리한 프로그램을 만들 수 있음 타입형이 아닌 인스턴스형의 메서드 적용됨을 확인! 상속을 하게 되면 여러 클래스를 하나의 타입(상위 클래스)으로 핸들링할 수 있음 다형성을 사용하는 이유? 다른 동물을 추가하는 경우 상속과 메서드 재정의를 활용하여 확장성 있는 프로그램을 만들 수 있음 그렇지 않은 경우 많은 if-else if문이 구현되고 코드의 유지보수가 어려워짐 위 클래스에서는 공통적인 부분을 제공..

메서드 재정의 하기 (overring)

하위 클래스에서 메서드 재정의 하기 오버 라이딩(overriding) : 상위 클래스에 정의된 메서드의 구현 내용이 하위 클래스에서 구현할 내용과 맞지 않는 경우 하위 클래스에서 동일한 이름의 메서드를 재정의 할 수 있음 VIPCustomer 클래스의 calcPrice()는 할인율이 적용되지 않음 재정의 하여 구현해야 함 Customer 클래스의 clacPrice 부분 VIPCustomer 클래스의 clacPrice 부분 @overriding 애노테이션은 재정의 된 메서드라는 의미로 선언부가 기존의 메서드와 다른 경우 에러가 남 @overriding 애노테이션 (annotation) 애노테이션은 원래 주석이라는 의미 컴파일러에게 특별한 정보를 제공해주는 역할 출력 테스트 --- price 값을 주고 등급..

상속 ( inheritance )

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