본문 바로가기

개발지/회고

[0808] 8월 1주 주간학습 회고 (0731)

#추상화

- 기존 클래스의 공통적인 요소들을 뽑아 상위 클래스를 만들어 내는 것.

- 추상 클래스와 인터페이스 문법 요소 사용.

 

#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