📗 BOOK/스프링 입문을 위한 자바 객체 지향의 원리와 이해

04 자바가 확장한 객체 지향

미미누 2022. 3. 25. 17:37

abstract 키워드 - 추상 메서드와 추상 클래스

추상 클래스는 인스턴스, 즉 객체를 만들 수 없다. 즉 new를 사용할 수 없다.

추상 메서드는 하위 클래스에게 메서드의 구현을 강제한다. 오버라이딩 강제

추상 메서드를 포함하는 클래스는 반드시 추상 클래스여야 한다.

 

생성자

개발자가 아무런 생성자도 만들지 않으면 자바는 인자가 없는 기본 생성자를 자동으로 만들어준다.

인자가 있는 생성자를 하나라도 만든다면 자바는 기본 생성자를 만들어 주지 않는다.

 

클래스 생성 시의 실행 블록, static 블록 

클래스 생성자는 존재하지 않는다.

클래스 정보는 해당 클래스가 코드에서 맨 처음 사용될 때 T 메모리의 스태틱 영역에 로딩되며, 이때 단 한번 해당 클래스의 static 블록이 실행된다.

왜 프로그램이 실행될 때 바로 클래스들의 정보를 T 메모리의 static 영역에 로딩하지 않고 해당 클래스가 처음 사용될 때 로딩할까?

스태틱 영역도 메모리이기 때문이다.

 

final과 클래스

클래스에 final이 붙었다면 어떤 의미가 될까?

-> 상속을 허락하지 않겠다는 의미다.

 

final과 변수

변수에 final이 붙었다면 그 의미는 뭘까?바로 변경 불가능한 상수메서드가 final 이라면 오버라이딩 불가  

 

instanceof 연산자

인스턴스는 클래스를 통해 만들어진 객체 instanceof 연산자가 강력하기는 하지만 LSP를 어기는 코드에서 주로 나타나는 연산자이다(?)instanceof 연산자는 클래스들의 상속 관계뿐만 아니라 인터페이스의 구현 관계에서도 동일하게 적용된다.

 

interface 키워드와 implements 키워드

 interface는 public 추상 메서드와 public 정적 상수만 가질 수 있다.정적 속성 -> 클래스명으로 접근 할 수 있는 속성

 

this 키워드 

this는 객체가 자기 자신을 지칭할 때 쓰는 키워드다.