#추상화
- 기존 클래스의 공통적인 요소들을 뽑아 상위 클래스를 만들어 내는 것.
- 추상 클래스와 인터페이스 문법 요소 사용.
#abstract 제어자
- 클래스와 메서드 앞에 붙어 사용. 각각 추상 클래스와 메서드로 만들어줌.
- 추상 클래스 & 메서드는 바디가 완성돼야 한다.
#추상 클래스
- 바디의 작성이 필요한 미완성 클래스 (메서드 시그니처만 존재)
- 상속 관계에 있는 새로운 클래스의 작성에 유용.
선언부만 있는 상위 클래스를 상속받아 하위 클래스에서 구현.
abstract class Animal {
public String kind;
public abstract void sound();
}
class Dolphin extends Animal { // 추상 클래스 Animal 클래스로부터 상속
public RattleSnake() { // 방울뱀
this.kind = "파충류";
}
pbulic void sound() { // 메서드 오버라이딩 -> 구현부 완성
System.out.println("츠르르");
}
}
class Tiger extends Animal { // 상속
public Tiger() {
this.kind = "포유류";
}
public void sound() {
System.out.println("어흥!");
}
}
class AnimalExample {
public static void main(String[] args) throws Exception {
Animal rattleSnake = new RattleSnake();
rattleSnake.sound();
Tiger tiger = new Tiger();
tiger.sound();
}
}
// 출력값
끼오오
어흥!
- 객체의 특징에 맞는 메서드를 구현할 수 있다. ( 호랑이의 울음소리, 종 / 방울뱀의 소리, 종 )
#final 키워드
- 필드, 지역변수, 클래스에 사용 가능
(1) 필드: 변경 또는 확장 불가능한 클래스
(2) 메서드: 오버라이딩 불가
(3) 변수: 값 변경 불가 (상수)
#인터페이스
- 추상 메서드와 상수만을 멤버로 갖는 클래스
- class 대신 interface 키워드 사용
- 내부의 모든 필드 public static final로 정의
- 상속이 extends 키워드가 아닌 implements키워드로 이뤄짐.
- 인터페이스를 구현(implements)한 클래스는 해당 인터페이스에 정의된 모든 추상메서드를 구현해야 함.
- 하나의 클래스가 여러 개의 인터페이스를 구현할 수 있음 (일반 클래스와 다르게 다중 상속 가능)
interface Feline { // 고양이과 동물 인터페이스 선언
public abstract void sound();
}
interface Food {
void feed();
}
class Lion implements Feline, Food { // 인터페이스(Feline, Food) 다중상속
public void sound() {
System.out.println("크앙!"); // Feline 추상메서드 오버라이딩 후 바디 완성
}
public void feed() {
System.out.println("고기!!"); // Food 추상메서드 오버라이딩 후 바디 완성
}
}
class Cat implements Feline, Food {
public void sound() {
System.out.println("야옹!"); // Feline 추상메서드 오버라이딩 후 바디 완성
}
public void feed() {
System.out.println("츄르!"); // Food 추상메서드 오버라이딩 후 바디 완성
}
}
계획에 없던 일이 생겨 8월 1주는 하루밖에 복습을 못 하였다.
7월 31일 하루밖에 못 했고, 다른 날은 1일 1 커밋을 하는 것에 그쳤다.
무리를 했는지 몸살이 났지만 다행히 주말에 아파 집에서 쉴 수 있었고, 하루를 쉬고 회복했다.!
다시 마음을 잡고 달려 나갈 8월을 잘 시작해 보자.!
인터페이스 클래스의 다중상속이 가능한 점을 활용하여
작성되어진 코드에서 클래스를 추가하고 싶을 때 사용하면 좋겠다는 생각이 들었다.
'개발지 > 회고' 카테고리의 다른 글
23년 코테 문제 회고 (0) | 2023.12.26 |
---|---|
[0814] 8월 2주 주간학습 회고 (8/7~8/10) (0) | 2023.08.14 |
[0730] 7월 5주 주간학습 회고 (0) | 2023.07.31 |
[0723] 7월 4주 주간학습 회고 (0) | 2023.07.29 |