SlideShare a Scribd company logo
1 of 15
Download to read offline
JAVA Class 상속
작성자 : 홍효상
이메일 : hyomee@naver.com
소스 : https://github.com/hyomee/JAVA_EDU
프로그램은 사람이 이해하는 코드를 작성.
느려도 꾸준하면 경기에서 이긴다.
Content
소스 : https://github.com/hyomee/JAVABASIC
8. Class 상속
1. 개념
2. Class 상속 ( Extends )
3. Abstract Class 상속 ( Extends )
4. Interface Class 상속 ( Implements )
1. 개념
8. Class 상속
• 부모클래스를성질을자식클래스가포함시키는문법요소
• 객체(사물)의공통적인성질(특성)을모아서 클래스를만들고독립적인성질을 각각클래스로만들면이때공통적인성질을부모클래스라하고개별클래스를자식클래스라한다.
“ 객체 지향 프로그램에서 가장 기본적인 문법 요소 ”
8-1. 개념
클래스 상속
이름
나이
증명서
몸무게
키
먹기
잠자기
등교하기
출근하기
술마신다
공부하기
일하기
사람
이름
나이
학생증
몸무게
키
먹기
잠자기
등교하기
공부하기
학생
이름
나이
사원증
몸무게
키
먹기
잠자기
등교하기
출근하기
술마신다
공부하기
일하기
직장인
이름
나이
몸무게
키
먹기
잠자기
술마신다
일반인
이름
나이
몸무게
키
먹기
잠자기
사람
학생증
등교하기
공부하기
학생
사원증
출근하기
술마신다
공부하기
일하기
직장인
술마신다
일반인
공통 성질(특징)
개별 성질
부모 클래스
자식 클래스
자식 클래스
1. 개념
8. Class 상속
• 중복되는속성(상태)과행동을별도로관리하여중복코드를제거한다..
-이름,나이,몸무게,키,먹기,잠자기
• 학생은사람이다,직장인은사람이다.직장인은성인이다.일반인도성인이다.처럼다양한표현을할수있는것을다양성이라한다.
“ 상속은 코드 중복 제거와 다형성을 위함이다.”
8-1. 개념
다양성
이름
나이
몸무게
키
먹기
잠자기
사람
학생증
등교하기
공부하기
학생
사원증
출근하기
술마신다
일하기
직장인
술마신다
일반인
이름
나이
몸무게
키
먹기
잠자기
사람
고등학생 사원증
출근하기
공부하기
일하기
직장인 일반인
술마신다
성인
술마신다
대학생
학생증
등교하기
공부하기
학생
상세화/구체화
조상 클래스
부모 클래스 부모 클래스
자식 클래스 자식 클래스
학생은 사람이다.
직장인은 사람이다.
일반인은 사람이다.
고등학생은 학생이다.
고등학생은 사람이다.
대학생은 사람이다.
….
사람은 학생이다.
-> 이상한 표현임
=> 상속은 자식에서 부모로 향하는 것이다.
1. 개념
8. Class 상속
• 중복되는속성(상태)과행동을별도로관리하여중복코드를제거한다..
-이름,나이,몸무게,키,먹기,잠자기
• 학생은사람이다,직장인은사람이다.직장인은성인이다.일반인도성인이다.처럼다양한표현을할수있는것을다양성이라한다.
“ 상속은 코드 중복 제거와 다형성을 위함이다.”
8-1.개념
다양성
이름
나이
몸무게
키
먹기
잠자기
사람
고등학생 사원증
출근하기
공부하기
일하기
직장인 일반인
술마신다
성인
술마신다
대학생
학생증
등교하기
공부하기
학생
조상 클래스
부모 클래스 부모 클래스
자식 클래스 자식 클래스
고등학생은 학생이다.
고등학생은 사람이다.
대학생은 사람이다.
….
➢ 다양성표현
사람[ ] = { new 사람(), new 사람() };
학생[ ] = { new 학생(), new 학생(), new 학생() };
사람[ ] = { new 사람(), new 학생(), new 직장인(), new 일반인() };
사람 h01 = new 학생();
사람 h01 = new 직장인();
사람 h01 = new 일반인();
• 배열표현(상속되지않은상태)
-동일자료형만요소로될 수있음
• 배열표현(상속됨)
-부모의성질(특성)을모두받을수있음
-또다른표현
1. Class 상속 ( Extends )
8. Class 상속
8-2. Class 상속 ( Extends )
01. 클래스생성
class 자식클래스 extends 부모클래스 {
….
}
사람
학생 직장인
class 학생 extends 사람 { … }
class 직장인 extends 사람 { …. }
사람
브루스버너박사
헐크
class 브루스버너박사 extends 사람, 헐크 { … }
➢ 다중상속->자바에서는허용하지않음
브루스버너박사가 달린다 -> 누가 달리는 것인가 ?
=> 모호성이 발생함
1. Class 상속 ( Extends )
8. Class 상속
8-2. Class 상속 ( Extends )
02. 클래스생성시메모리구조 ➢ 사용
인스턴스 메서드 영역 Stack 영역 Heap 영역
eat() {}
sleep() {}
goToSchool()
study()
Human
Student
student 100 Human 객체
( Objects )
Student 객체
( Objects )
name age
weight height
eat() sleep())
studentId
goToSchool()
study()
100 번지
1. Class 상속 ( Extends )
8. Class 상속
8-2. Class 상속 ( Extends )
03. 부모객체에생성자는상속대상이아니다.
Invalid method declaration; return type required
-> 부모 객체의 생성자를 재정의 하려고 해서 나는 오류
-> 자식 객체의 메서드로 사용 하여야 함
생성자는 리턴 타입이 없음
리턴 타입이 있는 것은 메서드
04. 다양성
Human
Student Adult
Worker SelfEmployed
CollegeStudent HighSchoolStudent
public class Human { }
public class Adult extends Human { }
public class Worker extends Adult { }
public class SlefEmpolyed extends Adult { }
public class Student extends Human { }
public class CollegeStudent extends Student { }
public class HighSchoolStudent extends Student { }
• 객체를 다양하게 생성 할 수 있다.
-> 중학생, 초등학생 …..
1. Class 상속 ( Extends )
8. Class 상속
8-2. Class 상속 ( Extends )
05. 객체생성시타입
class com.hyomee.extend.Human cannot be cast to class com.hyomee.extend.Student
java.lang.ClassCastException: class com.hyomee.extend.Human cannot be cast to class
com.hyomee.extend.Student
java.lang.ClassCastException: class com.hyomee.extend.Human cannot be cast to class
com.hyomee.extend.Student
Up Casting : Human human = (Human) student : compiler에 의해서 자동으로 추가
-> Human으로 전화 되었기 때문에 student의 성질(특성)은 사라짐
-> Human의 멤버, 메서드 만 사용 가능
Down Casting : 개발자가 직접 해야 함
-> Student 객체를 변환 함
-> Human, Student 의 모든 속성(멤버), 메서드 사용
Student는 Human를 상속 받아서 Human의 모든 성질(특성)을 사용 할 수 있음
-> Human, Student 의 모든 속성(멤버), 메서드 사용
Student를 사용 해서 Human으로 생성됨
-> Student의 속성(멤버), 메서드 사용 불가
-> Human의 멤버, 메서드 만 사용 가능
Human 객체 생성
-> Human의 멤버, 메서드 만 사용 가능
X
X
X
1. Class 상속 ( Extends )
8. Class 상속
8-2. Class 상속 ( Extends )
05. 객체타입확인(instanceof ) 06. Method Overriding
…
사람
…
술마신다
직장인
…
술마신다
자영자
술마신다
성인
…
사람
…
직장인
…..
자영자
술마신다
성인
성인은 술 마신다
직장인은 맥주를 마신다
자영업자는 소주를 마신다
부모의 행위(메서드)를 재
정의해서 자식에서 재정의
하는 것 -> Overriding
Overriding 이전
Overriding 이후
1. Class 상속 ( Extends )
8. Class 상속
8-2. Class 상속 ( Extends )
07. super & this
Overriding 이전
Overriding 이후
➢ 술을마신다를출력하고싶다면
super를 이용해서 부모 호출
• super :부모의멤버,메서드를접근할때사용,private로선언것은접근할수없음
• this :자기자신의멤버,메서드접근
• super() : 자식생성자에서부모의생성자에접근하기위해서사용
1. Class 상속 ( Extends )
8. Class 상속
8-2. Class 상속 ( Extends )
08. super()
• super() : 자식생성자에서부모의생성자에접근하기위해서사용
1
2
3
➢ 주의사항
• 생성자를OverLoading Method를만들때는매개변수없는기본생성자를
작성해야함
• super()를 사용 하여 부모 객체를 접근 하는 경우 super()실행 전에
아무것도실행하면안됨
1. Abatract Class
8. Class 상속
8-3. Abstract Class 상속 ( Extends )
• 추상메서드가1개이상포함하고있는클래스는반드시추상클래스로정의해야한다.
• 추상메서드:메서드의본체가없는미완성메서드로상속받은클래스에서실체화(구현)해야한다.
“ 추상 메서드가 1개 이상 포함 하고 있는 클래스 ”
Abatract Class
…
사람
…
술마신다
직장인
…
술마신다
자영자
술마신다
성인
“성인이 술마신다.”를 추상
하 하고 직장인이 술 마시
다는 구체화 한다.
추상 메서드 있음
추상 클래스 선언
추상 메서드 구현
1. Interface Class
8. Class 상속
8-4. Interface Class 상속
• Interface는입출력에서사용하는용어로서로다른시스템간의연동을의미한다.
• Interface는 시스템 또는 각 객체의 종류에 상관 없이 동일한 필드와 메서드를 제공하여 호환성을 제공 하기 위해서 사용 된다.
• 자바에서Interface는객체관계에서다른객체에게공개할기능만추상화하기위한용도로사용이된다.
• Class대신Interface키워드를사용한다.
“시스템 또는 각 객체의 종류에 상관 없이 동일한 필드와 메서드를 제공”
Interface Class
01. Interface 생성
interface 인터페이스명 {
public static final 자료형 필드명 = 값;
public abstract 리턴타입 메서드명();
default 자료형 메서드(매개변수) { … )
}
interface 인터페이스명 {
자료형 필드명 = 값;
리턴타입 메서드명();
default 자료형 메서드(매개변수) { … )
}
생략
1. Interface Class
8. Class 상속
8-4. Interface Class 상속
02. Interface 상속
• implements를 사용함
• implements는 다중 상속 가능 -> implements인터페이스명,인터페이스명
• extends와 같이사용하는경우extends클래스명implements인터페이스명순서로선언해야함
03. Interface 사용
인터페이스명 참조변수 = new 구현클래스();
class 클래스명 implements 인터페이스명 { .. }
class 클래스명 implements 인터페이스명, 인터페이스명 { .. }
class 클래스명 extends 클래스명 implements 인터페이스명 { .. }
상속 받은 객체에 자동
tatic final 로 자동 추가 됨

More Related Content

What's hot

파이썬 객체 클래스 이해하기
파이썬  객체 클래스 이해하기파이썬  객체 클래스 이해하기
파이썬 객체 클래스 이해하기Yong Joon Moon
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403Yong Joon Moon
 
파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131Yong Joon Moon
 
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance정연 최
 
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)MIN SEOK KOO
 
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
 [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields정연 최
 
파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310Yong Joon Moon
 
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기NAVER D2
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 Yong Joon Moon
 
Python class
Python classPython class
Python classHerren
 
DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)beom kyun choi
 
파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기Yong Joon Moon
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)MIN SEOK KOO
 

What's hot (16)

파이썬 객체 클래스 이해하기
파이썬  객체 클래스 이해하기파이썬  객체 클래스 이해하기
파이썬 객체 클래스 이해하기
 
파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403파이썬 Descriptor이해하기 20160403
파이썬 Descriptor이해하기 20160403
 
Java(1/4)
Java(1/4)Java(1/4)
Java(1/4)
 
Java(2/4)
Java(2/4)Java(2/4)
Java(2/4)
 
파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131파이썬+객체지향+이해하기 20160131
파이썬+객체지향+이해하기 20160131
 
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
[새차원, 코틀린(Kotlin) 강좌] 7 classes and_inheritance
 
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
 
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
 [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields [새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
[새차원, 코틀린(Kotlin) 강좌] 9. Properties and Fields
 
파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310파이썬+클래스+구조+이해하기 20160310
파이썬+클래스+구조+이해하기 20160310
 
Java lambda
Java lambdaJava lambda
Java lambda
 
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기
 
Python class
Python classPython class
Python class
 
DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)DDD 구현기초 (거의 Final 버전)
DDD 구현기초 (거의 Final 버전)
 
파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기파이썬 class 및 function namespace 이해하기
파이썬 class 및 function namespace 이해하기
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
 

Similar to Java extends

[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍MinGeun Park
 
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본객체지향 프로그래밍 기본
객체지향 프로그래밍 기본용호 최
 
PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지Yoonwhan Lee
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투Ubuntu Korea Community
 
마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론
마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론
마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론마이캠퍼스
 
객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)Seung-June Lee
 
OOP - Object Oriendted Programing
OOP - Object Oriendted ProgramingOOP - Object Oriendted Programing
OOP - Object Oriendted ProgramingChangHyeon Bae
 
Java, android 스터티2
Java, android 스터티2Java, android 스터티2
Java, android 스터티2Heejun Kim
 
안.전.제.일. 강화학습!
안.전.제.일. 강화학습!안.전.제.일. 강화학습!
안.전.제.일. 강화학습!Dongmin Lee
 
SW1차 프로젝트 Hive 최종발표
SW1차 프로젝트 Hive 최종발표SW1차 프로젝트 Hive 최종발표
SW1차 프로젝트 Hive 최종발표Sinhyub Kim
 

Similar to Java extends (15)

Hello, C# : OOP
Hello, C# : OOPHello, C# : OOP
Hello, C# : OOP
 
[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍[C++ lab] 3. c++ 프로그래밍
[C++ lab] 3. c++ 프로그래밍
 
객체지향 프로그래밍 기본
객체지향 프로그래밍 기본객체지향 프로그래밍 기본
객체지향 프로그래밍 기본
 
Working with code
Working with codeWorking with code
Working with code
 
Python class
Python classPython class
Python class
 
Java 다형성
Java 다형성Java 다형성
Java 다형성
 
PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지PHP에서 객체와 데이터 연결 유지
PHP에서 객체와 데이터 연결 유지
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론
마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론
마이캠퍼스 딥러닝스쿨(한돌) 파트#1-이론
 
객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)객체지향 개념 (쫌 아는체 하기)
객체지향 개념 (쫌 아는체 하기)
 
OOP - Object Oriendted Programing
OOP - Object Oriendted ProgramingOOP - Object Oriendted Programing
OOP - Object Oriendted Programing
 
Java_05 class
Java_05 classJava_05 class
Java_05 class
 
Java, android 스터티2
Java, android 스터티2Java, android 스터티2
Java, android 스터티2
 
안.전.제.일. 강화학습!
안.전.제.일. 강화학습!안.전.제.일. 강화학습!
안.전.제.일. 강화학습!
 
SW1차 프로젝트 Hive 최종발표
SW1차 프로젝트 Hive 최종발표SW1차 프로젝트 Hive 최종발표
SW1차 프로젝트 Hive 최종발표
 

More from Hyosang Hong

MSA_기초자료.pdf
MSA_기초자료.pdfMSA_기초자료.pdf
MSA_기초자료.pdfHyosang Hong
 
Spring 교육 자료
Spring 교육 자료Spring 교육 자료
Spring 교육 자료Hyosang Hong
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Hyosang Hong
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Hyosang Hong
 
Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙Hyosang Hong
 
Spring 교육 자료
Spring 교육 자료Spring 교육 자료
Spring 교육 자료Hyosang Hong
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Hyosang Hong
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Hyosang Hong
 
유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙Hyosang Hong
 

More from Hyosang Hong (20)

MSA_기초자료.pdf
MSA_기초자료.pdfMSA_기초자료.pdf
MSA_기초자료.pdf
 
Java 연산자
Java 연산자Java 연산자
Java 연산자
 
Java generic
Java genericJava generic
Java generic
 
Java 제어
Java 제어Java 제어
Java 제어
 
Java collection
Java collectionJava collection
Java collection
 
Spring 교육 자료
Spring 교육 자료Spring 교육 자료
Spring 교육 자료
 
Map struct
Map structMap struct
Map struct
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405
 
Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙Java 유지보수 가능한 개발 원칙
Java 유지보수 가능한 개발 원칙
 
Enum
EnumEnum
Enum
 
Java stream v0.1
Java stream v0.1Java stream v0.1
Java stream v0.1
 
Spring 교육 자료
Spring 교육 자료Spring 교육 자료
Spring 교육 자료
 
Map struct
Map structMap struct
Map struct
 
Kafka 자료 v0.1
Kafka 자료 v0.1Kafka 자료 v0.1
Kafka 자료 v0.1
 
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
 
Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405Java 이해하기 쉬운 코드 20210405
Java 이해하기 쉬운 코드 20210405
 
유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙
 
Java stream v0.1
Java stream v0.1Java stream v0.1
Java stream v0.1
 

Java extends

  • 1. JAVA Class 상속 작성자 : 홍효상 이메일 : hyomee@naver.com 소스 : https://github.com/hyomee/JAVA_EDU 프로그램은 사람이 이해하는 코드를 작성. 느려도 꾸준하면 경기에서 이긴다.
  • 2. Content 소스 : https://github.com/hyomee/JAVABASIC 8. Class 상속 1. 개념 2. Class 상속 ( Extends ) 3. Abstract Class 상속 ( Extends ) 4. Interface Class 상속 ( Implements )
  • 3. 1. 개념 8. Class 상속 • 부모클래스를성질을자식클래스가포함시키는문법요소 • 객체(사물)의공통적인성질(특성)을모아서 클래스를만들고독립적인성질을 각각클래스로만들면이때공통적인성질을부모클래스라하고개별클래스를자식클래스라한다. “ 객체 지향 프로그램에서 가장 기본적인 문법 요소 ” 8-1. 개념 클래스 상속 이름 나이 증명서 몸무게 키 먹기 잠자기 등교하기 출근하기 술마신다 공부하기 일하기 사람 이름 나이 학생증 몸무게 키 먹기 잠자기 등교하기 공부하기 학생 이름 나이 사원증 몸무게 키 먹기 잠자기 등교하기 출근하기 술마신다 공부하기 일하기 직장인 이름 나이 몸무게 키 먹기 잠자기 술마신다 일반인 이름 나이 몸무게 키 먹기 잠자기 사람 학생증 등교하기 공부하기 학생 사원증 출근하기 술마신다 공부하기 일하기 직장인 술마신다 일반인 공통 성질(특징) 개별 성질 부모 클래스 자식 클래스 자식 클래스
  • 4. 1. 개념 8. Class 상속 • 중복되는속성(상태)과행동을별도로관리하여중복코드를제거한다.. -이름,나이,몸무게,키,먹기,잠자기 • 학생은사람이다,직장인은사람이다.직장인은성인이다.일반인도성인이다.처럼다양한표현을할수있는것을다양성이라한다. “ 상속은 코드 중복 제거와 다형성을 위함이다.” 8-1. 개념 다양성 이름 나이 몸무게 키 먹기 잠자기 사람 학생증 등교하기 공부하기 학생 사원증 출근하기 술마신다 일하기 직장인 술마신다 일반인 이름 나이 몸무게 키 먹기 잠자기 사람 고등학생 사원증 출근하기 공부하기 일하기 직장인 일반인 술마신다 성인 술마신다 대학생 학생증 등교하기 공부하기 학생 상세화/구체화 조상 클래스 부모 클래스 부모 클래스 자식 클래스 자식 클래스 학생은 사람이다. 직장인은 사람이다. 일반인은 사람이다. 고등학생은 학생이다. 고등학생은 사람이다. 대학생은 사람이다. …. 사람은 학생이다. -> 이상한 표현임 => 상속은 자식에서 부모로 향하는 것이다.
  • 5. 1. 개념 8. Class 상속 • 중복되는속성(상태)과행동을별도로관리하여중복코드를제거한다.. -이름,나이,몸무게,키,먹기,잠자기 • 학생은사람이다,직장인은사람이다.직장인은성인이다.일반인도성인이다.처럼다양한표현을할수있는것을다양성이라한다. “ 상속은 코드 중복 제거와 다형성을 위함이다.” 8-1.개념 다양성 이름 나이 몸무게 키 먹기 잠자기 사람 고등학생 사원증 출근하기 공부하기 일하기 직장인 일반인 술마신다 성인 술마신다 대학생 학생증 등교하기 공부하기 학생 조상 클래스 부모 클래스 부모 클래스 자식 클래스 자식 클래스 고등학생은 학생이다. 고등학생은 사람이다. 대학생은 사람이다. …. ➢ 다양성표현 사람[ ] = { new 사람(), new 사람() }; 학생[ ] = { new 학생(), new 학생(), new 학생() }; 사람[ ] = { new 사람(), new 학생(), new 직장인(), new 일반인() }; 사람 h01 = new 학생(); 사람 h01 = new 직장인(); 사람 h01 = new 일반인(); • 배열표현(상속되지않은상태) -동일자료형만요소로될 수있음 • 배열표현(상속됨) -부모의성질(특성)을모두받을수있음 -또다른표현
  • 6. 1. Class 상속 ( Extends ) 8. Class 상속 8-2. Class 상속 ( Extends ) 01. 클래스생성 class 자식클래스 extends 부모클래스 { …. } 사람 학생 직장인 class 학생 extends 사람 { … } class 직장인 extends 사람 { …. } 사람 브루스버너박사 헐크 class 브루스버너박사 extends 사람, 헐크 { … } ➢ 다중상속->자바에서는허용하지않음 브루스버너박사가 달린다 -> 누가 달리는 것인가 ? => 모호성이 발생함
  • 7. 1. Class 상속 ( Extends ) 8. Class 상속 8-2. Class 상속 ( Extends ) 02. 클래스생성시메모리구조 ➢ 사용 인스턴스 메서드 영역 Stack 영역 Heap 영역 eat() {} sleep() {} goToSchool() study() Human Student student 100 Human 객체 ( Objects ) Student 객체 ( Objects ) name age weight height eat() sleep()) studentId goToSchool() study() 100 번지
  • 8. 1. Class 상속 ( Extends ) 8. Class 상속 8-2. Class 상속 ( Extends ) 03. 부모객체에생성자는상속대상이아니다. Invalid method declaration; return type required -> 부모 객체의 생성자를 재정의 하려고 해서 나는 오류 -> 자식 객체의 메서드로 사용 하여야 함 생성자는 리턴 타입이 없음 리턴 타입이 있는 것은 메서드 04. 다양성 Human Student Adult Worker SelfEmployed CollegeStudent HighSchoolStudent public class Human { } public class Adult extends Human { } public class Worker extends Adult { } public class SlefEmpolyed extends Adult { } public class Student extends Human { } public class CollegeStudent extends Student { } public class HighSchoolStudent extends Student { } • 객체를 다양하게 생성 할 수 있다. -> 중학생, 초등학생 …..
  • 9. 1. Class 상속 ( Extends ) 8. Class 상속 8-2. Class 상속 ( Extends ) 05. 객체생성시타입 class com.hyomee.extend.Human cannot be cast to class com.hyomee.extend.Student java.lang.ClassCastException: class com.hyomee.extend.Human cannot be cast to class com.hyomee.extend.Student java.lang.ClassCastException: class com.hyomee.extend.Human cannot be cast to class com.hyomee.extend.Student Up Casting : Human human = (Human) student : compiler에 의해서 자동으로 추가 -> Human으로 전화 되었기 때문에 student의 성질(특성)은 사라짐 -> Human의 멤버, 메서드 만 사용 가능 Down Casting : 개발자가 직접 해야 함 -> Student 객체를 변환 함 -> Human, Student 의 모든 속성(멤버), 메서드 사용 Student는 Human를 상속 받아서 Human의 모든 성질(특성)을 사용 할 수 있음 -> Human, Student 의 모든 속성(멤버), 메서드 사용 Student를 사용 해서 Human으로 생성됨 -> Student의 속성(멤버), 메서드 사용 불가 -> Human의 멤버, 메서드 만 사용 가능 Human 객체 생성 -> Human의 멤버, 메서드 만 사용 가능 X X X
  • 10. 1. Class 상속 ( Extends ) 8. Class 상속 8-2. Class 상속 ( Extends ) 05. 객체타입확인(instanceof ) 06. Method Overriding … 사람 … 술마신다 직장인 … 술마신다 자영자 술마신다 성인 … 사람 … 직장인 ….. 자영자 술마신다 성인 성인은 술 마신다 직장인은 맥주를 마신다 자영업자는 소주를 마신다 부모의 행위(메서드)를 재 정의해서 자식에서 재정의 하는 것 -> Overriding Overriding 이전 Overriding 이후
  • 11. 1. Class 상속 ( Extends ) 8. Class 상속 8-2. Class 상속 ( Extends ) 07. super & this Overriding 이전 Overriding 이후 ➢ 술을마신다를출력하고싶다면 super를 이용해서 부모 호출 • super :부모의멤버,메서드를접근할때사용,private로선언것은접근할수없음 • this :자기자신의멤버,메서드접근 • super() : 자식생성자에서부모의생성자에접근하기위해서사용
  • 12. 1. Class 상속 ( Extends ) 8. Class 상속 8-2. Class 상속 ( Extends ) 08. super() • super() : 자식생성자에서부모의생성자에접근하기위해서사용 1 2 3 ➢ 주의사항 • 생성자를OverLoading Method를만들때는매개변수없는기본생성자를 작성해야함 • super()를 사용 하여 부모 객체를 접근 하는 경우 super()실행 전에 아무것도실행하면안됨
  • 13. 1. Abatract Class 8. Class 상속 8-3. Abstract Class 상속 ( Extends ) • 추상메서드가1개이상포함하고있는클래스는반드시추상클래스로정의해야한다. • 추상메서드:메서드의본체가없는미완성메서드로상속받은클래스에서실체화(구현)해야한다. “ 추상 메서드가 1개 이상 포함 하고 있는 클래스 ” Abatract Class … 사람 … 술마신다 직장인 … 술마신다 자영자 술마신다 성인 “성인이 술마신다.”를 추상 하 하고 직장인이 술 마시 다는 구체화 한다. 추상 메서드 있음 추상 클래스 선언 추상 메서드 구현
  • 14. 1. Interface Class 8. Class 상속 8-4. Interface Class 상속 • Interface는입출력에서사용하는용어로서로다른시스템간의연동을의미한다. • Interface는 시스템 또는 각 객체의 종류에 상관 없이 동일한 필드와 메서드를 제공하여 호환성을 제공 하기 위해서 사용 된다. • 자바에서Interface는객체관계에서다른객체에게공개할기능만추상화하기위한용도로사용이된다. • Class대신Interface키워드를사용한다. “시스템 또는 각 객체의 종류에 상관 없이 동일한 필드와 메서드를 제공” Interface Class 01. Interface 생성 interface 인터페이스명 { public static final 자료형 필드명 = 값; public abstract 리턴타입 메서드명(); default 자료형 메서드(매개변수) { … ) } interface 인터페이스명 { 자료형 필드명 = 값; 리턴타입 메서드명(); default 자료형 메서드(매개변수) { … ) } 생략
  • 15. 1. Interface Class 8. Class 상속 8-4. Interface Class 상속 02. Interface 상속 • implements를 사용함 • implements는 다중 상속 가능 -> implements인터페이스명,인터페이스명 • extends와 같이사용하는경우extends클래스명implements인터페이스명순서로선언해야함 03. Interface 사용 인터페이스명 참조변수 = new 구현클래스(); class 클래스명 implements 인터페이스명 { .. } class 클래스명 implements 인터페이스명, 인터페이스명 { .. } class 클래스명 extends 클래스명 implements 인터페이스명 { .. } 상속 받은 객체에 자동 tatic final 로 자동 추가 됨