자바의정석 7장 요약 객체지향-2

서현우·2022년 6월 24일
0

자바의정석

목록 보기
19/22

7장 객체지향 프로그래밍 - 2

상속이란?

기존의 클래스를 재사용해서 새로운 클래스를 만드는 것으로 코드의 재사용성을 높이고, 중복을 제거해서 생산성과 유지보수에 유리하다.
생성자와 초기화 블럭은 상속되지 않고, 멤버(멤버변수와 메서드)만 상속된다. 자손의 멤버 개수는 조상보다 항상 같거나 많다.

포함(Composite)이란?

멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것.

다중 상속이란?

여러 클래스에서 상속받을 수 있어서 많은 기능을 가진 클래스를 쉽게 만들 수 있지만, 관계가 복잡해지고, 상속받은 멤버간의 이름 구별이 어렵다. 그래서 자바는 단일 상속에, 포함과 인터페이스를 사용해서 보완한다.

Object 클래스란?

모든 클래스의 조상이므로 모든 클래스가 멤버를 상속받아서 쓸수있다.
(Object클래스는 필드가 없고, 메서드만 가지고 있다.)

오버라이딩(overriding)이란?

조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것.

오버라이딩의 조건은?

조상의 메서드 선언부와 일치해야 하고, 접근 제어자는 조상 이상의 범위로, 예외는 조상 이하의 개수여야 한다.

오버로딩과 오버라이딩의 차이는?

오버로딩은 이름이 같고, 매개변수의 타입이나 개수가 다른 새로운 메서드를 만드는 것이고, 오버라이딩은 상속받은 메서드의 내용을 변경하는 것.

super란?

조상의 멤버를 가리키는 참조변수로, 상속받은 멤버와 자식의 멤버를 구별할 때 사용한다.

super()란?

자손의 인스턴스를 만들 때, 조상의 멤버를 초기화 하기 위해서, 조상의 생성자를 호출 할 때 사용되는 생성자이다.

패키지란?

서로 관련된 클래스들끼리 묶어서 효율적으로 관리하기 위한 클래스의 묶음이다.

import문이란?

다른 패키지의 클래스를 패키지명 없이 쉽게 사용하게 해준다.

제어자(modifier)란?

클래스나 변수, 메서드의 선언부에 사용되어 어떤 의미를 부여하는 것.
크게 접근제어자와 그 외의 것으로 나눌 수 있다.

static이란?

클래스 변수 같이 공통적으로 사용하거나, 인스턴스를 만들지 않고 사용할 수 있는 변수, 메서드, 초기화블럭에 static을 붙인다.

final이란?

상수, 조상이 될 수 없는 클래스, 오버라이딩 될 수 없는 메서드를 만들 때 final을 붙인다.

abstract이란?

추상 메서드나 추상 클래스를 만들 때 abstract를 붙인다.

접근 제어자란?

데이터 보호를 위해 외부에서 접근하지 못하도록 접근을 제한하는 것으로, 캡슐화에 해당한다. 접근 범위에 따라 private는 같은 클래스 내에서만, default는 같은 패키지 내에서만, protected는 같은 패키지와 다른 패키지에 있는 자손까지, public은 접근 제한이 없다.

다형성이란?

조상타입의 참조변수로 자손타입의 객체를 다루는 것.
장점으로 서로 다른 타입의 객체를 배열로 묶어서 다룰 수 있다.

업캐스팅과 다운캐스팅은?

자손타입의 참조변수를 조상타입으로 바꾸는 업캐스팅은 자동형변환이 가능하지만, 반대인 조상타입의 참조변수를 자손타입으로 바꾸는 다운캐스팅은 형변환을 생략할 수 없다.

참조변수를 형변환 하는 이유는?

사용할 수 있는 멤버의 개수를 조절하기 위해서.

추상클래스란?

미완성된 클래스로 추상메서드를 가지고 있는 클래스이다. 직접 인스턴스를 만들 수는 없지만, 상속을 통해 다른 클래스 작성에 도움을 주기 위해 사용된다.

추상메서드란?

선언부만 있고 구현부는 없는 메서드로 자손클래스가 반드시 오버라이딩으로 구현해야 하는 메서드이다.

추상화와 구체화란?

추상화는 클래스간의 공통점을 찾아서 공통의 조상을 만드는 것이고, 구체화는 상속을 통해 클래스를 구현하고 확장하는 것이다.

인터페이스란?

멤버로 상수와 추상메서드만 가지고 있는 추상클래스로, 구현을 통해 다른 클래스 작성에 도움을 주기위해 사용된다.
모든 멤버변수에는 public static final이 붙고, 메서드에는 public abstract가 붙는다.

추상클래스와 인터페이스의 차이는?

추상클래스는 추상메서드가 있을 뿐이지 나머지는 일반클래스와 같지만, 인터페이스는 상수와 추상메서드만을 멤버로 가질 수 있다.

인터페이스를 이용한 다형성에는 어떤 것이 있는가?

매개변수의 타입을 인터페이스로해서 이를 구현한 클래스의 인스턴스를 매개변수로 받을 수 있고, 리턴타입을 인터페이스로 해서 이를 구현한 클래스의 인스턴스를 반환할 수 있다.

인터페이스의 장점은?

서로 관계없는 클래스간에 관계를 맺어줄수 있고, 간접적인 관계를 통해 독립적인 프로그래밍이 가능하다.

디폴트 메서드

자손 클래스가 구현하지 않아도 되는 인터페이스의 메서드이다.

익명 클래스

오직 하나의 객체만을 생성할 수 있는 일회용 클래스이다.

profile
안녕하세요!!

0개의 댓글