Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 25304번
- 2026 하반기 대기업 반드시 갑니다
- 백엔드 개발자 로드맵
- 자바 #자바문법 #자바기초 #참조형 #기본형
- 반복문
- level2
- 서버 개발자
- level3
- 올 겨울은 조금 따뜻할 것 같다.
- java #예외처리 #throw #throws
- object 클래스 # java
- tmax tibero
- Next.js
- 주니어 백엔드 개발자
- Spring
- ndc2025
- 서버 엔지니어
- 브루트 포스법
- 넥슨개발자컨퍼런스
- server developer
- 나는야 4학년 #5학년 까지 가보자구
- 이분탐색
- server engineer
- static #자바 메모리 구조 #멤버 변수
- software enginner
- 정보처리기사 실기 #정처기 실기 #2024년 2회 #정처기 2024년 2회 #공부법 # 꿀팁
- 2798블랙잭
- java #추상클래스
- heap area #stack area #static area #jvm
- tibero 7.23
Archives
- Today
- Total
개발자 쿠키
명품 JAVA Programming Chap05 상속 본문
✔Chap05 상속
- 상속의 개념
- 클래스 상속과 객체
- 상속과 protected 접근 지정자
- 상속과 생성자
- 업캐스팅과 instanceof 연산자
- 메소드 오버라이딩
- 추상 클래스
- 인터페이스
✔Chap05-1 상속의 개념
- 클래스의 간결화 - 멤버의 중복 작성 불필요
- 클래스 관리 용이 - 클래스들의 계층적 분류
- 소프트웨어의 생산성 향상 - 클래스 재사용과 확장 용이
✔Chap05-2 클래스 상속과 객체
- 부모 클래스: 슈퍼 클래스(super class)
- 자식 클래스: 서브 클래스(sub class)
✔서브 클래스 객체 생성
point p = new Point();
ColorPoint cp = new ColorPoint(); // 서브 클래스 객체 생성
✔자바 상속의 특징
- 자바에서는 클래스의 다중 상속을 지원하지 않는다.
- 자바에서는 상속의 횟수에 제한을 두지 않는다.
- 자바에서는 계층 구조의 최상위에 java.lang.Object 클래스가 있다.
✔Chap05-3 상속과 protected 접근 지정자
- 슈퍼 클래스 protected 멤버가 접근을 허용할 때
- 같은 패키지에 속한 모든 클래스들은 접근 가능하다.
- 같은 패키지든 다른 패키지든 상속받는 서브 클래스
✔Chap05-4 상속과 생성자
super() : 슈퍼 클래스 생성자를 호출하는 코드
반드시 생성자의 첫 라인에 사용되어야 한다.
b = new B(5);
spier(x); // x 값은 5
✔Chap05-5 업캐스팅과 instanceof 연산자
- 캐스팅(casting): 타입변환
- 업캐스팅: 서브 클래스의 객체에 대한 레퍼런스를 슈퍼 클래스 타입으로 변환하는 것
- 다운캐스팅: 업캐스팅과 반대
- instanceof 연산자: 이항 연산자 boolean값으로 결과 값이 나온다.
레퍼런스 instanceof 클래스명
✔Chap05-6 메소드 오버라이딩
- 메소드 오버라이딩(method overriding): 슈퍼 클래스와 서브 클래스의 메소드 사이에 발생하는 관계로서, 슈퍼 클래스에 선언된 메소드와 같은 이름, 같은 리턴 타입, 같은 매개 변수 리스트를 갖는 메소드를 서브 클래스에서 재작성 하는 것이다.
- 동적 바인딩: 슈퍼 클래스의 메소드를 무시하고 서브 클래스에서 오버라이딩된 메소드가 무조건 실행되도록 하는 것
- 메소드 오버라이딩의 제약 사항
- 슈퍼 클래스의 메소드와 동일한 원형으로 작성한다.
- 슈퍼 클래스 메소드의 접근 지정자보다 접근의 범위를 좁여 오버라이딩 할 수 없다.
this와 super는 모두 레퍼런스로서 this로는 현재 객체의 모든 멤버를, super로는 현재 객체 내에 있는 슈퍼 클래스 멤버를 접근할 수 있다.
this.객체내의멤버
super.객체내의슈퍼클래스의 멤버
this()와 super()는 모두 메소드 호출이며, this()는 생성자에서 다른 생성자를 호출할 때 사용하고, super()는 서브 클래스의 생성자에서 슈퍼 클래스의 생성자를 호출할 때 사용한다.
- 오버로딩과 오버라이딩은 자바에서 다형성을 이루는 방법들이다.
- 오버라이딩: 슈퍼 클래스의 메소드를 이름, 매개변수, 타입과 개수, 리턴 타입을 모두 동일하게 서브 클래스에 재작성하는 경우이다.
- 오버로딩: 한 클래스나 상속 관계에 있는 클래스들 사이에 메소드의 이름은 같지만, 매개변수 타입이나 개수가 다르게 메소드를 작성하는 경우이다.
| 비교 요소 | 메소드 오버로딩 | 메소드 오버라이딩 |
| 선언 | 같은 클래스나 상속관계에서 동일한 이름의 메소드 중복 작성 | 서브 클래스에서 슈퍼 클래스에 있는 메소드와 동일한 이름의 메소드 재작성 |
| 관계 | 동일한 클래스 내 혹은 상속 관계 | 상속 관계 |
| 목적 | 이름이 같은 여러개의 메소드를 중복 작성하여 사용의 편리성 향상, 다형성 실현 | 슈퍼 클래스에 구현된 메소드를 무시하고 서브 클래스에서 새로운 기능의 메소드를 재정의하고자 함. 다형성 실현 |
| 조건 | 메소드 이름은 반드시 동일하고, 매개변수 타입이나 개수가 달라야 성립 | 메소드의 이름, 매개변수 타입과 개수, 리턴 타입이 모두 동일하여야 성립 |
| 바인딩 | 정적 바인딩. 호출될 메소드는 컴파일 시에 결정 | 동적 바인딩. 실행 시간에 오버라이딩된 메소드 찾아 호출 |
✔Chap05-7 추상 클래스
- 추상 메소드(abstract method): 선언은 되어 있으나 코드가 구현되어 있지 않은 ,즉 껍데기만 있는 메소드이다.
- 추상메소드를 가지고 있으면 반드시 추상 클래스로 선언되어야 한다.
- 추상 클래스는 객체를 생성할 수 없다.
- 추상클래스는 단순히 상속받는 서브 클래스는 추상 클래스가 된다.
✔추상클래스의 용도
- 응용프로그램의 설계와 구현을 분리할 수 있다.
- 계층적 상속 관계를 가지는 클래스들의 구조를 만들 때 적합하다.
✔Chap05-8 인터페이스
- 인터페이스: 스펙을 주어 클래스들이 그 기능을 서로 다르게 구현할 수 있도록 하는 클래스의 규격 선언, 클래스의 다 형성을 실현하는 도구이다.
- 인터페이스 구성
- 상수와 추상 메소드
- default 메소드
- private 메소드
- static 메소드
- 추상 메소드는 public abstract로 정해져 있으며, 생략될 수 있고, 다른 접근 지정으로 지정될 수 없다.
- default, private, static 메소드들은 모두 인터페이스 내에 코드가 작성되어 있어야 한다.
- default 메소드의 접근 지정은 public으로 고정되어 있다.
- private 메소드는 인터페이스 내에서만 호출 가능하다.
- static 메소드의 경우 접근 지정이 생략되면 public이며, private으로 지정될 수 있다.
- 인터페이스는 객체를 생성할 수 없다.
- 인터페이스에 구현되지 않은 추상 메소드를 가질 수 있기 때문에 객체를 생성할 수 없다.
- 인터페이스 타입의 레퍼런스 변수는 선언 가능하다.
- 인터페이스끼리 상속된다
- 인터페이스를 상속받아 클래스를 작성하면 인터페이스의 모든 추상 메소드를 구현하여야 한다.
✔인터페이스와 추상 클래스 비교
- 비슷한점
- 객체를 생성할 수 없고, 상속을 위한 슈퍼 클래스로만 사용된다.
- 클래스의 다형성을 실현하기 위한 목적이다.
| 비교 | 목적 | 구성 |
| 추상 클래스 | 추상 클래스는 서브 클래스에서 필요로 하는 대부분의 기능을 구현하여 두고 서브 클래스가 상속받아 활용할 수 있도록 하되, 서브 클래스에서 구현 할 수밖에 없는 기능만을 추상 메소드로 선언하여, 서브 클래스에서 구현하도록 하는 목적(다형성) | -추상 메소드와 일반 메소드 모두 포함 -상수, 변수 필드 모두 포함 |
| 인터페이스 | 인터페이스는 객체의 기능을 모두 공개한 표준화 문서와 같은 것으로, 개발자에게 인터페이스를 상속받는 클래스의 목적에 따라 인터페이스의 모든 추상 메소드를 만들도록 하는 목적(다형성) | -변수필드는 포함하지 않음 -상수, 추상 메소드, 일반 메소드, default 메솓, static 메 소드 모두 포함 -protected 접근 지정 선언 불가 다중 상속 지원 |
명품 JAVA Programming - 황기태, 김효수 - 내용을 정리한 내용입니다.
'java' 카테고리의 다른 글
| 명품 JAVA Programming Chap07 제네릭과 컬렉션 (0) | 2022.08.16 |
|---|---|
| 명품 JAVA Programming Chap06 모듈과 패키지 개념, 자바 기본 패키지 (0) | 2022.08.14 |
| 명품 JAVA Programming Chap04 클래스와 객체 (0) | 2022.08.03 |
| 명품 JAVA Programming Chap03 반복문과 배열 그리고 예외 처리 (0) | 2022.08.02 |
| 명품 JAVA Programming Chap01~02 자바 기본 프로그래밍 (0) | 2022.08.01 |