자바의 정석 스터디 - 객체지향2
자바의 정석
자바의 정석 스터디 2주차 (2021-09-20 ~ ) Ch06 - 객체지향프로그래밍 ⅱ 정리
목차
1. 상속(inheritance)
- 상속의 정의와 장점
- 클래스간의 관계 - 포함관계
- 클래스간의 관계 결정하기
- 단일상속(single inheritance)
- Object클래스 - 모든 클래스의 조상
2. 오버라이딩(overriding)
- 오버라이딩이란?
- 오버라이딩의 조건
- 오버로딩 vs 오버라이딩
- super
- super() - 조상클래스의 생성자
3. pakage와 import
- 패키지
- 패키지의 선언
- import문
- import문의 선언
- static import문
4. 제어자(modifier)
- 제어자란?
- static - 클래스의, 공통적인
- final - 마지막의, 변경될 수 없는
- abstract - 추상의, 미완성의
- 접근 제어자(access modifier)
- 제어자(modigier)의 조합
5. 다형성(polymorphism)
- 다형성이란?
- 참조변수의 형변환
- instanceof 연산자
- 참조변수와 인스턴스의 연결
- 매개변수의 다형성
- 여러 종류의 객체를 배열로 다루기
6. 추상클래스
- 추상클래스란?
- 추상메서드(abstract method)
- 추상 클래스의 작성
7. 인터페이스(interface)
- 인터페이스?
- 인터페이스의 작성
- 인터페이스의 상속
- 인터페이스의 구현
- 인터페이스를 이용한 다중상속
- 인터페이스를 이용한 다형성
- 인터페이스의 장점
- 인터페이스의 이해
- 디폴트 메서드와 static 메서드
8. 내부클래스(inner class)
- 내부클래스란?
- 내부클래스의 종류와 특징
- 내부클래스의 선언
- 내부클래스의 제어자와 접근성
익명 클래스(anonymous class)
1. 상속(inheritance)
상속이란❓
기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것
- 상속은 적은양의 코드로 새로운 클래스를 작성할 수 있다
- 상속은 코드를 공통적으로 관리 할 수 있기 때문에 코드의 추가 및 변경이 매우 용이하다.
- 자바에서의 상속 구현은 ‘extends’ 키워드를 함께 써주면 된다.
- ex ) class Child extends Parent{ … }
- 이 두 클래스는 서로 상속 관계 에 있다고 하며, 상속해주는 클래스를 ‘조상 클래스’ 라고 하고, 상속 받는 클래스를 ‘자손 클래스’ 라고 한다.
- ex ) class Child extends Parent{ … }
조상클래스 : 부모(Parent)클래스, 상위(super) 클래스, 기반(base) 클래스 자식 클래스 : 자식(Child)클래스, 하위(sub)클래스, 파생(derived) 클래스
</br>
상속의 정의와 장점

▲ 부모클래스와 자손클래스의 다이어그램&상속관계도
자손 클래스는 조상 클래스의 모든 맴버를 상속 받기 떄문에, Child 클래스는 Parent클래스 를 포함한다고 할 수 있다. 그래서 위와 같은 다이어그램으로 표현 할 수 있다.
하지만 Child클래스에 새로운 멤버로 맴버변수나, 메서드를 추가해도 조상인 Parent클래스는 아무런 영향을 받지 않는다.
생성자와 초기화 블럭은 상속되지 않는다. 맴버만 상속된다. 자손 클래스의 멤버 개수는 조상 클래스보다 항상 같거나 많다.
Parent.class
package ch07_inheritance;
public class Parent {
private static String firstName = "Kang";
}
공통적으로 들어가야할 변수는 다음과 같이 부모 변수에 공통으로 선언해서 관리하면 좋다.
Child.class
package ch07_inheritance;
public class Child extends Parent{
}
Child2.class
package ch07_inheritance;
public class Child2 extends Parent{
}
두 Child class모두 firstName이라는 변수를 자동적으로 갖게된다. 여기서 자식 개체를 다시 상속 받는 실습을 해보자
GrandChild.class
package ch07_inheritance;
public class GrandChild extends Child {
}
이렇게 되면 GrandChild 클래스는 Parent와 Child의 변수와 메서드를 모두 같게되고 Child2와는 Parent가 갖고있는 변수와 메서드만 같게된다.
CaptionTvExample.class
package ch07_inheritance;
class Tv{
boolean power; //전원 상태
int channel; //채널
void power() { //전원 켜기/끄기
power = !power;
}
void channelUp() {//채널 업
channel++;
}
void channelDown() {//채널 다운
channel--;
}
}
class CaptionTv extends Tv{
//Tv의 모든 변수와 메서드를 가지고 있는상태
// +
boolean cation; //캡션상태
void displayCation(String text) {
if(cation) {
System.out.println(text); //캡션이 true라면 text를 보여준다.
}
}
}
public class CaptionTvExample {
public static void main(String[] args) {
CaptionTv cTv = new CaptionTv();
cTv.channel = 10;
cTv.channelUp(); //11
System.out.println(cTv.channel);
cTv.displayCation("Hello, World");
cTv.cation = true; //캡션을 켠다
cTv.displayCation("Hello, World");
}
}
자손 클래스를 생성하면 조상 클래스의 맴버도 함께 생성되기 때문에 따로 조상 클래스의 인스턴스를 생성하지 않고도 조상클래스의 맴버 사용이 가능하다.
클래스간의 관계 - 포함관계
클래스간의 관계 결정하기
단일상속(single inheritance)
Object클래스 - 모든 클래스의 조상
2. 오버라이딩(overriding)
오버라이딩이란?
오버라이딩의 조건
오버로딩 vs 오버라이딩
super
super() - 조상클래스의 생성자
3. pakage와 import
패키지
패키지의 선언
import문
import문의 선언
static import문
4. 제어자(modifier)
제어자란?
static - 클래스의, 공통적인
final - 마지막의, 변경될 수 없는
abstract - 추상의, 미완성의
접근 제어자(access modifier)
제어자(modigier)의 조합
5. 다형성(polymorphism)
다형성이란?
참조변수의 형변환
instanceof 연산자
참조변수와 인스턴스의 연결
매개변수의 다형성
여러 종류의 객체를 배열로 다루기
6. 추상클래스
추상클래스란?
추상메서드(abstract method)
추상 클래스의 작성
7. 인터페이스(interface)
인터페이스?
인터페이스의 작성
인터페이스의 상속
인터페이스의 구현
인터페이스를 이용한 다중상속
인터페이스를 이용한 다형성
인터페이스의 장점
인터페이스의 이해
디폴트 메서드와 static 메서드
8. 내부클래스(inner class)
내부클래스란?
내부클래스의 종류와 특징
내부클래스의 선언
내부클래스의 제어자와 접근성
익명 클래스(anonymous class)
