Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

5. 접근 제한자의 이해 SCJP 자격증 프로젝트 발표자 : 노효진.
01_ 가상 함수를 사용한 다형성의 구현 02_ 오버라이딩
10. 예외 처리.
클래스 class, 객체 object 생성자 constructor 접근 access 제어 이벤트 event 처리.
Chap05 상속 5.1 상속의 개요 5.2 멤버 변수의 상속 5.3 메소드의 상속과 오버라이딩(Overriding)
최윤정 Java 프로그래밍 클래스 상속 최윤정
5장. 객체지향과 클래스.
JAVA 클래스와 멤버 2014년 4월 2일 19:00 손은경 강원대학교 데이터베이스 연구실 강원대학교 데이터베이스 연구실.
클래스 구성 요소 1개의 클래스는 최대 8개의 구성 요소를 가질 수 있다
Chapter 05. 클래스Ⅱ.
Java로 배우는 디자인패턴 입문 Chapter 5. Singleton 단 하나의 인스턴스
JAVA 언어로 배우는 디자인 패턴 입문 chap. 1-2.
제 5 장 상속과 다형성.
명품 JAVA Essential.
19장 스윙과 이벤트 처리 Section 1 스윙 컴포넌트 Section 2 이미지 아이콘과 라벨
제 8 장 상속.
자바 5.0 프로그래밍.
제 6장. 생성자와 소멸자 학기 프로그래밍언어및실습 (C++).
8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용 8.3 인터페이스의 상속 8.4 인터페이스 참조
Lesson 6. 형변환.
6장 클래스 6.1 클래스의 일반 구조 6.2 클래스 선언 6.3 객체의 생성 6.4 멤버 변수 6.5 멤버변수 접근 한정자
Chap08 다중 스레드 8.1 스레드 개요 8.2 Thread 클래스와 스레드 생명주기 8.3 스레드 생성과 사용
어서와 Java는 처음이지! 제7장 상속.
6장. 클래스.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
자바 5.0 프로그래밍.
패키지와 접근 제어 패키지에 대하여 접근 제어에 대하여.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Java 6장. 클래스 : 속성 public class SumTest {
Lesson 7. 클래스와 메소드 - 1.
자바 5.0 프로그래밍.
Choi, Namseok Java 기초 (객체와 클래스) Choi, Namseok
6장 클래스 6.1 클래스의 일반 구조 6.2 클래스 선언 6.3 객체의 생성 6.4 멤버 변수 6.5 멤버변수 접근 한정자
13. 연산자 오버로딩.
Java 8장. 상속 public class SumTest {
7장 인터페이스와 추상 클래스.
Java 9장. 인터페이스와 예외처리 public class SumTest {
Method & library.
JA A V W. 03.
Chapter 11 객체지향 프로그래밍의 기초 01 클래스 02 생성자 03 인스턴스 변수와 클래스 변수 예제 모음 요약
명품 C++ 9장 가상 함수와 추상 클래스.
Web programming Chap 04 상속 김 정 석
Lesson 2. 기본 데이터형.
1주차 : 자바기본 소제목 : 자바 프로그래밍 기본.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Effective Java [Issue 1 and 2]
15장 컬렉션 프레임워크 Section 1 컬렉션 프레임워크의 개요 Section 2 리스트 Section 3 셋
Part 4 클래스 라이브러리 Chapter 10 : 다중 스레드 Chapter 11 : 패키지와 주요 클래스
자바 5.0 프로그래밍.
자바 가상 머신 프로그래밍 Chap 10. 자바 컴파일링의 안쪽 ② Pslab 오민경.
Power Java 제11장 상속.
JA A V W. 06.
10장 상속 Section 1 상속의 개요 Section 2 상속과 한정자 Section 3 상속과 생성자
12. 상속 : 고급.
객체기반 SW설계 팀활동지 4.
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
C# 07장. 객체 지향 개념.
클래스 : 기능 CHAPTER 7 Section 1 생성자(Constructor)
중복 멤버의 처리 조 병 규 한 국 교 통 대 학 교 SQ Lab..
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
Lecture 04 객체지향 페러다임 Kwang-Man Ko
3. 모듈 (5장. 모듈).
발표자 : 이지연 Programming Systems Lab.
2.가상머신의 탐험 도구, Oolong에 대하여 ps lab 김윤경.
Java의 정석 제 8 장 예외처리 (Exception handling) Java 정석 남궁성 강의
자바 객체 지향 프로그래밍 Ps lab 김윤경.
OOP Practices OOP presentation 6 작성자 Kimjinsik 소속 Mobile computing Lab
상속 (Inheritance) private 전용부분 전용부분 공용부분 공용부분 public 기본 클래스
7 생성자 함수.
Presentation transcript:

Chap07 상속 Section 1 : 상속의 개요 Section 2 : 멤버 변수의 상속 Section 3 : 메소드의 상속과 오버라이딩(Overriding) Section 4 : 예약어 super Section 5 : 상속과 생성자 Section 6 : 객체의 형변환 Section 7 : 연산자 instanceof Section 8 : 추상클래스와 추상메소드 Section 9 : 예약어 final

1. 상속의 개요 OOP의 주요 특성인 모듈의 재사용과 코드의 간결성 제공 상속의 개념을 이용하여 클래스의 계층구조 구성 JDK에서 제공되는 클래스로부터 상속 받아 자바 프로그램 작성 자바에서의 모든 클래스는 상위 클래스를 가진다 자바 프로그램의 최상위 클래스는 java.lang.Object 클래스이다. 상위 클래스를 지정하기 위해 “extends” 키워드 사용 상속이 포함된 클래스 선언 형식 [public/final/abstract] class 클래스이름 extends 상위클래스이름 { .......... // 멤버변수선언 .......... // 생성자 .......... // 메소드선언 }

2. 멤버 변수의 상속 멤버 변수 상속의 예 class A { int aa = 1; } class B extends A { int bb = 2; class C extends B { int cc = 3; class Dabc { public static void main(String[] args) { C objc = new C(); System.out.println("objc객체의 객체속성변수 aa의 값은 " + objc.aa); System.out.println("objc객체의 객체속성변수 bb의 값은 " + objc.bb); System.out.println("objc객체의 객체속성변수 cc의 값은 " + objc.cc); }} 출력 결과 objc객체의 객체속성변수 aa의 값은 1 objc객체의 객체속성변수 bb의 값은 2 objc객체의 객체속성변수 cc의 값은 3

2. 멤버 변수의 상속 접근 한정자 : protected 같은 패키지 내의 클래스와 같은 패키지는 아니지만 상속된 클래스에서 사용 가능한 접근 한정자

2. 멤버 변수의 상속 접근 한정자의 종합적인 예 패키지 1 패키지 2 같은 패키지내에의 클래스 public class A1 { int a; public int b; protected int c; private int d; void am() {} public void bm() {} protected void cm() {} private dm() {} } public class A2 { A1 o = new A1(); o.a // 접근가능 o.b // 접근가능 o.c // 접근가능 o.d // 접근불가능 o.am() // 접근가능 o.bm() // 접근가능 o.cm() // 접근가능 o.dm() // 접근불가능 public class A3 extends A1 { a // 접근가능 b // 접근가능 c // 접근가능 d // 접근불가능 am() // 접근가능 bm() // 접근가능 cm() // 접근가능 dm() // 접근불가능 } 상속 같은 패키지내에서 상속된 클래스 같은 패키지내에의 클래스 public class A4 a // 접근불가능 am() // 접근불가능 public class A5 { o.a // 접근불가능 o.c // 접근불가능 o.am() // 접근불가능 o.cm() // 접근불가능 다른 패키지이지만 상속된 클래스 다른 패키지의 클래스

2. 멤버 변수의 상속 예제 1 : Inheritance1.java 예제 2 : Inheritance2.java

3. 메소드 상속과 오버라이딩 오버로딩(overloading) : 5장 참조 오버라이딩(overriding) 같은 클래스 내에 같은 이름의 생성자나 메소드를 사용하는 행위 매개변수의 개수와 타입이 달라야 한다 오버라이딩(overriding) 상속관계에 있는 클래스들간에 같은 이름의 메소드를 정의하는 행위 기존 클래스의 메소드 구현 부분만 약간 변화시켜 새로운 클래스를 생성할 수 있다 매개변수의 개수와 타입이 같아야 한다 오버로딩과 오버라이딩은 객체지향 언어의 주요 개념인 다형성(polymorphism)을 구현한다

3. 메소드 상속과 오버라이딩 예제 1 : Inheritance4.java 예제 2 : OverrideExam1.java

4. 예약어 super super의 사용 하위 클래스에 의해 가려진 상위 클래스의 멤버 변수나 메소드에 접근할 때 상위 클래스의 생성자를 호출할 때 super(매개변수)

4. 예약어 super 예제 1 : InheritanceSuper.java 예제 2 : OverrideExam3.java

5. 상속과 생성자 상속된 클래스로부터 객체가 생성될 때 상위 클래스의 생성자가 하위 클래스의 생성자보다 먼저 수행 상위 클래스의 묵시적인 생성자(매개변수가 없는)가 수행 묵시적인 생성자가 아닌 다른 생성자를 호출(오버로딩의 경우)하고자 한다면 예약어 super를 사용하여 명시적으로 호출 super 문장은 반드시 첫번째 라인에 와야 한다

5. 상속과 생성자 예제 1 : Constructors1.java 예제 2 : Consturctors2.java

6. 객체의 형변환 상속 관계의 클래스에서 객체의 형변환 가능 class Acast { int a=1; } class Bcast extends Acast { int b=2; } class Ccast extends Bcast { int c=3; } class TestCasting { public static void main(String[] args) { Acast refA; // Acast 타입의 객체 refA 선언 refA = new Ccast(); /* Acast 타입의 객체 참조 변수 refA에 Ccast 클래스의 객체를 생성하여 할당 */ System.out.println("refA.a의 값은 "+refA.a); } 출력결과 refA.a의 값은 1

6. 객체의 형변환 앞의 프로그램을 다음과 같이 수정 class TestCasting { public static void main(String[] args) { Acast refA; refA = new Ccast(); System.out.println("refA.a의 값은 "+ refA.c ); // Ccast 클래스의 멤버인 c에 접근 시도. 에러 발생 } TestCasting.java:13: No variable c defined in class Acast. System.out.println("refA.a의 값은 "+refA.c); ^ 1 error

6. 객체의 형변환 앞의 프로그램을 반대로 다음과 같이 수정 class TestCasting { public static void main(String[] args) { Ccast refC = new Acast(); // 에러 발생 System.out.println("refC.a의 값은 "+refC.a); } TestCasting.java:12: Incompatible type for declaration. Explicit cast needed to convert Acast to Ccast. Ccast refC = new Acast(); ^ 1 error

6. 객체의 형변환 다형성을 나타내는 프로그램 예 출력결과 UStudent GStudent Student class Student {   public String toString() { return "Student"; } } class GStudent extends Student {   public String toString() { return "GStudent"; } class UStudent extends GStudent {   public String toString() { return "UStudent"; } /* 위의 3개의 클래스는 상속관계에 있으면서 상위 클래스의 메소드를 오버라이딩하고 있다 */ public class PBTest {   public static void main(String args[]) {     UStudent us = new UStudent();     method1(us);     method1(new GStudent());     method1(new Student());   }   public static void method1(Student x) {           System.out.println(x.toString()); 출력결과 UStudent GStudent Student

6. 객체의 형변환 예제 1 : OverridingCast.java

7. 연산자 instanceof 객체가 특정 클래스나 인터페이스로부터 생성된 객체인지를 판별해주는 관계 연산자(표4-5) 형식 객체참조변수 instanceof type 예제 1 : InstanceOf.java

8. 추상 클래스와 추상 메소드 추상 클래스 하위 클래스에서 구현될 추상적인 기능만을 추상 메소드로 선언 추상 메소드는 기능이 무엇(What)인지만을 선언하고 구현부분이 없는 메소드이다 추상 메소드는 하위 클래스에서 오버라이딩되어 구현된다 추상 클래스는 추상 메소드 외에 일반적인 속성과 메소드를 가질 수 있다. abstract class 클래스이름 { ……..// 일반 속성과 메소드 기술 abstract void 추상메소드이름(); // 추상 메소드 선언 …….. }

8. 추상 클래스와 추상 메소드 예제 1 : AbstractClass.java

9. 예약어 final final을 3가지 용도로 사용 final을 사용하는 이유 상수로 사용될 객체 속성 변수 보안과 설계부분을 명확하게 하기 위해