본문 바로가기
기타/도서

[자바의 정석] 5. Java 객체지향 프로그래밍

by cejin 2023. 11. 21.

1. 호출 스택(call stack)

: 메서드의 작업에 필요한 메모리 공간을 제공

 

 

2. 메서드 오버로딩(method overloading)

: 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것

 

* 조건

- 메서드 이름 동일

- 매개변수의 개수와 타입은 달라야 함

- 반환 타입은 부관

 

 

3. 생성자(constructor)

: 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'

 

1. 조건

- 생성자 이름 = 클래스 이름

- 리턴 값 없음

 

2. 다른 생성자 호출할 때

this()나 this(매개변수) 사용

 

 

4. this

: 인스턴스 자신을 가리키는 참조변수 (주소가 저장)

 

 

5. 멤버변수의 초기화

* 클래스 변수(cv) -> 인스턴스 변수(iv)

 

1. 자동 초기화

2. 명시적 초기화(explicit initialization)

- 기본형 : int door = 4;

- 참조형 : Engine e = new Engine();

3. 초기화 블록(initialization block)

4. 생성자

 

 

6. 클래스 간의 관계

* 클래스를 재사용하는 방법

1. 포함관계 : ~은 ~을 가지고 있다(has-a)

- 멤버변수로 사용. Circle 클래스의 멤버변수로 Point 클래스 사용

2. 상속관계 : ~은 ~이다(is-a)

- 상속받기. class Circle extends Point

 

 

7. Object 클래스

: 모든 클래스의 조상

 

 

8. 오버라이딩 (overriding)

: 조상 클래스로부터 상속받은 메서드 내용을 변경하는 것. 덮어쓰기

 

1. 조건

- 접근 제어자 : 조상 클래스의 메서드보다 좁은 범위로 변경 X. 캡슐화랑 관련.

( public > protected > (default) > private )

- 예외 : 조상 클래스의 메서드보다 많은 수의 예외를 선언 불가

 

2. 오버로딩 vs. 오버라이딩

- 오버로딩 : 기존에 없는 새로운 메서드 정의 (new)

- 오버라이딩 : 상속받은 메서드 내용을 변경 (change, modify)

 

 

9. 패키지 (package)

: 클래스의 묶음

- 클래스, 인터페이스 포함 가능

- 효율적인 관리 가능

- 물리적으로 하나의 디렉토리

 

 

10. import문

1. 사용

import 패키지명.클래스명;

import 패키지명.*;

 

2. static import 문

: static 멤버를 호출할 때 클래스 이름 생략 가능

import static java.lang.System.out;  //out.println(a); 가능

 

 

11. 제어자(modifier)

: 클래스, 변수 또는 메서드의 선언부에 함께 사용. 부가적 의미를 부여.

1. static : 클래스의, 공통적인

2. final : 마지막의, 변경될 수 없는

3. abstract : 추상의, 미완성의

 

 

12. instanceof 연산자

: 참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 사용

- 조건문에 사용

if (참조변수 instanceof 클래스명)

 

 

13. 추상 (abstract)

1. 추상 클래스 : 미완성 설계도. 인스턴스 생성불가

2. 추상 메서드 : 선언부만 작성. {} 없음

 

 

14. 인터페이스

: 기본 설계도. 일종의 추상클래스

 

1. 특징

- 추상화 정도가 더 높음

- 알반 메서드, 멤버변수 X 

- 추상 메서드(public abstract 메서드명), 상수(public static final 타입 상수이름)만 멤버로 가질 수 있음

- JDK 1.8부터 디폴트 메서드(default)와 static 메서드 추가 가능

* 디폴트 메서드 : 추상 메서드의 기본적인 구현을 제공하는 메서드

 

2. 상속 (extends)

- 인터페이스끼리만 가능

- 다중상속 가능

 

3. 구현 (iimplements)

 

4. 리턴 타입이 인터페이스

: 메서드가 해당 인터페이스를 구현한 클래스의 인스턴스를 반환한다는 것

 

 

15. 내부클래스

1. 종류

1) 인스턴스 클래스

2) 스태틱 클래스

3) 지역 클래스

4) 익명 클래스 : 일회용. 이름 없음

new 조상클래스이름() {} 또는 new 구현인터페이스이름(){}

 

2. 선언 : 변수 선언 위치와 동일 (멤버변수, 멤버함수 내부)

 

 

 

출처 : 자바의 정석 기초편 1