본문 바로가기
Java/Java

[자바의 정석_기초편] Chapter07. 객체지향(Object Oriented)_5

by HJ0216 2023. 5. 11.

이 글은 남궁성의 정석코딩 [자바의정석-기초편] 수강하며 정리한 글입니다.

 

 

🟣 기본 환경: IDE: Eclipse, Language: Java

 

 

 

인터페이스(interface)

구현된 것이 전혀 없는 설계도, 모든 멤버가 public

abstract method의 집합 - iv 불가

cf. abstract class: abstract method를 갖고 있는 일반 class - iv를 갖을 수도 있음

interface 내부에서는 public abstract 생략 가능

인터페이스의 조상은 인터페이스만 가능

클래스와 달리 다중 상속이 가능

 

interface의 구현

class className implements interfaceName {}

: 인터페이스에 정의된 추상 메서드를 완성하는 것

 

인터페이스에서 일부만 구현 시, abstract class 선언

인터페이스 타입 매개변수는 인터페이스 구현한 클래스의 객체만 가능

 

인터페이스 장점

: 선언과 구현을 분리할 수 있음

: class A → interface I → class B의 관계를 만들어주면 class C로 변경해야하는 경우도 변경할 필요X

: 서로 관계없는 클래스들의 관계를 맺어줄 수 있다.

→ 상속관계와 관계 없이 인터페이스로 묶어줄 수 있음

 

종합

 

내부 클래스(Inner Class): 외부 클래스의 멤버들에 쉽게 접근 가능

 

 

class의 접근 제어자: public, (default)

inner class의 접근 제어자: public, prodected, (default), private

 

Instance class: iv만 선언 가능(final static은 상수이므로 허용)

Static class: cv, iv 모두 선언 가능

Instance Method: instance member, static member에 접근 가능

Static Method: static member만 접근 가능

 

Instance member는 Static member에 접근 가능

Static member는 Instance member에 접근 불가

Static Method에서 Instance member에 접근 시, outer class를 먼저 생성

 

 

outer class의 private member도 접근 가능

LocalInnerClass: outer class의 local variable은 final이 붙은 상수만 접근 가능

final이 생략가능하게 되면서 final이 붙지 않은 변하지 않는 변수에도 접근 가능

(단, 변수 lv 값 변화 시 변수화되어 오류 발생)

Compile 시, class 생성

1. Ex7_15

2. Outer2

3. Outer2$InstanceInner

4. Outer2$StaticInner

5. Outer21LocalInner - LocalInner의 경우, 숫자가 추가적으로 붙음(Method가 여러 개 있을 수 있으므로)

 

 

 

소스 코드

🔗 HJ0216/java-practice

 

참고 자료

📑 자바의 정석 7장 - 내부 클래스의 제어자, 접근성