abstract class
interface
generic
추상 클래스, abstract class
- 상속(extends) 관계 정의를 통한 클래스 정의
- 차
- 현재 위치, 연료
- 전기차
- 디젤차
자식에서 전부 @Override 하더라도. 비용면에서 부모에 한 번 선언하는 게 낫다.
=> 굳이 구현하려고 하지말고 선언부만 남긴다. 구현부는 ;으로 대체.
- 구현부가 없다는 의미로 abstract 키워드를 메서드 선언부에 추가.
- 객체를 생성할 수 없다 클래스라는 의미로 클래스 선언부에 abstract 추가.
abstract class Vehicle {
private int curX, curY;
public void reportPosition(){
//현재위치
}
public abstract void addFuel(); // abstract..!
}
- abstract 클래스는 상속 전용의 클래스
- 자식은 abstract method를 재정의할 책임
- 객체 생성 불가, 클래스에 구현부가 없는 메서드가 있으므로
- 하지만 상위 클래스 타입으로 자식을 참조는 가능.
- Vehicle v = new ElectricCar();
- 왜 abstract를 사용하는 게 좋은가?
- 구현의 강제를 통해 프로그램의 안정성 향상.
- interface에 있는 메서드 중 구현할 수 있는 메서드를 구현해 개발 편의 제공.
인터페이스, interface
- 서로 다른 두 시스템, 장치, 소프트웨어 따위를 서로 이어 주는 부분. 또는 그런 장치
GUI, Graphic User Interface
- 프로그램과 사용자 사이의 접점
인터페이스 작성
- 최고 수준의 추상화 단계 : 일반 메서드는 모두 abstract
- JDK 8에서 default method와 static method 추가
- 헝태
- 클래스와 유사하게 interface 선언
- 멤버 구성
- 모든 멤버변수는 public static final 이며 생략 가능
- 모든 메서드는 public abstract 이며 생략 가능
인터페이스 상속
- 클래스와 마찬가지로 extends로 상속
- 다른점은 다중 상속이 가능
- 헷갈릿 메서드 구현 자체가 없다.
보통 -able로 이름작성. ~하는 기능 중심
인터페이스 구현과 객체 참조
- 다형성은 조상 클래스 뿐 아니라 조상 인터페이스에도 적용
- interface와의 관계도 is a 관계이지만 좀 더 세부적으로 is able to라고도 한다.
- ~~할 수 있는 기능을 가지게 되는 관계 able!
인터페이스의 필요성
- 구현의 강제로 표준화 처리
- abstract 메서드 사용
- 인터페이스를 통한 간접적인 클래스 사용으로 손쉬운 모듈 교체 지원
- 서로 상속의 관계가 없는 클래스들에게 인터페이스를 통한 관계 부여로 다형성 확장
- 모듈 간 독립적 프로그래밍 가능 => 개발 기간 단축
인터페이스 쓰는 이유
-퇴근을 빨리해야해서.
default method
- 인터페이스에 선언 된 구현부가 있는 일반 메서드
- 메서드 선언부에 default modifier 추가 후 메서드 구현부 작성
- 접근제한자는 public으로 한정됨(생략 가능)
- 필요성
- 기존에 interface 기반으로 동작하는 라이브러리의 interface에 추가해야 하는 기능이 발생
- abstract 메서드는 모든 구현체들이 추가되는 메서드를 override 해야 함
- default 메서드는 abstract가 아니므로 반드시 구현 해야 할 필요는 없어짐
- default method의 충돌
- mothod 우선 순위
- super class의 method 우선 ( class > interface )
- interface간의 충돌 : sub class는 반드시 override해서 충돌 방지.
다양한 타입의 객체를 다루는 메서드. 컬렉션 클래스에서 컴파일 시에 타입 체크.
- 미리 사용할 타입을 명시해서 형 변환을 하지 않아도 되게 함.
- 객체의 타입에 대한 안전성 향상 및 형 변환의 번거로움 감소.
List<int> ... 알잖아.
InteliJ 단축키
alt + insert => 자동생성옵션들 getter, setter ...
ctl + alt + v => 타입 자동 앞에 붙여줌.
//public 붙이는 이유 찾아보기
Calendar
과목평가 키워드.
1. 데이터 타입과 형변환, 연산자
2. 기본문장 switch, while, continue, break..
3. 클래스 설계
- 생성자
- toString, equals, hashcode
4. 객체생성 : this, super
5. 다형성 : Overloading, Overrding
6. 배열, 초기화
7. 자바 기본 API, String, Object
8. abstract class, interface
9. Modifier
Do it 자바 코딩테스트 책, 유튜브.
바킹독...
소중한 정보 잘 봤습니다!