자바 객체 지향의 원리와 이해 - #4 자바가 확장한 객체 지향

jhkim·2023년 3월 20일
0

추상 메서드와 추상 클래스

추상 메서드: 선언부는 있으나 구현부가 없는 메서드
추상 클래스 내에 선언될 수 있다.

만약 울어보세요() 메소드를 가진 Animal클래스를
여러 동물들이 상속받아 각각 다르게 울도록 구현한다면
Animal클래스에서의 울어보세요()는 어떻게 구현해야 할까?
이럴 때 추상 메서드를 선언한다.



static 블록

클래스도 생성자와 비슷한 역할을 하는 static블록이 있다.

public class 동물 {
	static {
    	println 월월!
    }
}

만약 동물 클래스를 사용하는 코드가 있다면 해당 클래스가 코드에서 맨 처음 사용될 때 static영역에 로딩되며, 그때 딱 한번 static 블록이 실행된다.

그러나 동물 클래스가 사용되지 않는다면, 동물 클래스는 T메모리의 static 영역에 자리잡지도 않고, static블록 역시 실행되지 않는다.

static블록 내에서는 static 멤버만을 사용할 수 있다. 객체가 생성되기 전에는 접근할 수 없기 때문이다.



❓왜 클래스는 처음 사용될 때 static 영역에 로딩될까❓
-> 스태틱 영역도 메모리이므로, 늦게 사용하고 빨리 반환하는 것이 좋다.
(그러나 자바의 static 영역에 한번 올라가면 프로그램 종료시까지 메모리 반환이 불가능하다)


final 키워드

  1. final + 클래스

    상속을 허락하지 않으므로 하위 클래스를 만들 수 없다.

  2. final + 변수
    변경 불가능한 상수가 된다.

  3. final + 메서드
    재정의(오버라이딩)이 금지된다.


interface + implements

인터페이스는 public 추상 메서드와 public 정적 상수만을 가질 수 있다.
따라서 public과 abstract 등을 붙이지 않아도 자동으로 자바가 붙인다.

0개의 댓글