JAVA PROGRAMMING 실습 07. 상속

Similar documents
PowerPoint 프레젠테이션

Microsoft PowerPoint - 5장

<4D F736F F F696E74202D205B4A415641C7C1B7CEB1D7B7A1B9D65D35C0E5BBF3BCD3B0FAB4D9C7FCBCBA>

PowerPoint 프레젠테이션

gnu-lee-oop-kor-lec06-3-chap7

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345])

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

5장.key

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

JAVA PROGRAMMING 실습 02. 표준 입출력

Design Issues

Microsoft PowerPoint - java1-lecture5.ppt [호환 모드]

Microsoft PowerPoint - 2강

Microsoft PowerPoint - 6주차.pptx

PowerPoint Presentation

PowerPoint Presentation

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

C++ Programming

JAVA PROGRAMMING 실습 05. 객체의 활용

Microsoft PowerPoint - java1-lecture5.ppt [호환 모드]

PowerPoint 프레젠테이션

슬라이드 1

Microsoft PowerPoint - additional08.ppt [호환 모드]

Microsoft PowerPoint - chap11

Microsoft PowerPoint - java2 [호환 모드]

No Slide Title

제11장 프로세스와 쓰레드

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - additional07.ppt [호환 모드]

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Slide 1

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

설계란 무엇인가?

PowerPoint 프레젠테이션

PowerPoint Template

Microsoft Word - java19-1-midterm-answer.doc

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 05. 객체의 활용

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Chapter 6.ppt

PowerPoint Presentation

PowerPoint Presentation

Microsoft Word - EEL2 Lab4.docx

PowerPoint Presentation

Cluster management software

Slide 1

PowerPoint Presentation

PowerPoint Template

Microsoft PowerPoint - 04-UDP Programming.ppt

C++ Programming

Microsoft PowerPoint - additional06.ppt [호환 모드]

Microsoft PowerPoint - CSharp-10-예외처리

Spring Data JPA Many To Many 양방향 관계 예제

슬라이드 1

자바 프로그래밍

PowerPoint Presentation

Microsoft PowerPoint - Java7.pptx

ThisJava ..

PowerPoint Presentation

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

쉽게 풀어쓴 C 프로그래밍

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

JAVA PROGRAMMING 실습 09. 예외처리

Microsoft PowerPoint - hci2-lecture12 [호환 모드]

슬라이드 1

Cluster management software

JAVA PROGRAMMING 실습 02. 표준 입출력

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

int total = 0; for( int i=1; i<=5; i++ ) { for( int j=1; j<=i; i++ ) { total ++; System.out.println( total ); 대구분 : 객체와 Class 소구분 : 객체생성과사용 / Class 선언

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

PowerPoint 프레젠테이션

슬라이드 1

Chapter 6 Objects and Classes

PowerPoint 프레젠테이션

교육자료

소프트웨어공학개론 강의 5: 객체지향개념 최은만동국대학교컴퓨터공학과

Network Programming

PowerPoint Presentation

PowerPoint 프레젠테이션

Microsoft PowerPoint - Lect04.pptx

Microsoft PowerPoint - java1 [호환 모드]

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

윤성우의 열혈 TCP/IP 소켓 프로그래밍

PowerPoint 프레젠테이션

Microsoft PowerPoint - lec12 [호환 모드]

JVM 메모리구조

비긴쿡-자바 00앞부속

거리계산문제 간단한문제 n 2 차원평면상의두점사이의거리를구하는프로그램을작성해보자 n 해법 : 피타고라스정리 거리구하는공식 n 두점 (x 1, y 1 ) 과 (x 2, y 2 ) 사이의거리 d n 제곱근은 Math.sqrt, 제곱은 Math.ow 로구함 4 절차지향적거리

Transcription:

상속 부모클래스에정의된필드와메소드를자식클래스가물려받는것 슈퍼클래스 (superclass) 특성을물려주는상위클래스 서브클래스 (subclass) 특성을물려받는하위클래스 슈퍼클래스에자신만의특성 ( 필드, 메소드 ) 추가 슈퍼클래스의특성 ( 메소드 ) 을수정 = 오버라이딩구체화 class Phone 전화걸기전화받기 class MobilePhone 전화걸기전화받기무선기지국연결배터리충전하기 class MusicPhone 전화걸기전화받기무선기지국연결배터리충전하기음악다운받기음악재생하기

중복된멤버 상속이없는경우중복된멤버를가진 4 개의클래스 상속을이용한경우중복이제거되고간결해진클래스구조

상속선언 public class Person{ public class Student extends Person{ public class StudentWorker extends Student{ 자바에서의상속특징 다중상속을지원하지않음 상속횟수는무제한 상속의최상위조상클래스는 java.lang.objetc 클래스 모든클래스는자동으로 java.lang.object 상속받음

서브클래스의객체와멤버접근 서브클래스의객체에는슈퍼클래스의멤버포함 슈퍼클래스의 private 멤버는상속되지않음 서브클래스에서직접접근불가 private 멤버는슈퍼클래스의메소드를통해접근!!!! 서브클래스객체에슈퍼클래스멤버가포함되므로슈퍼클래스멤버의접 근은서브클래스멤버접근과동일

public class MemberAccessExample{ public static void main(string[] args){ A a = new A(); B b = new B(); a.p = 5; a.n = 5; b.p = 5; b.n = 5; b.setn(10); int i = b.getn(); b.m = 20; b.setm(20); System.out.println(b.toString()); 10 20

default private protected public 같은패키지의클래스 O X O O 같은패키지의서브클래스 O X O O 다른패키지의클래스 X X X O 다른패키지의서브클래스 X X O O private 멤버 sup 의멤버가 private 지정되면 sub 는그멤버직접사용할수없다 protected 멤버 같은패키지에속한다른클래스접근허용 다른패키지여도상속받는 sub의접근을허용 public 멤버 sub 뿐만아니라어떤클래스에서도접근허용 ( 패키지가달라도접근가능 ) default 멤버 같은패키지에있는모든클래스접근허용

질문 1. 서브클래스의객체가생성될때서브클래스의생성자와슈퍼 클래스의생성자가모두실행되는가? 아니면서브클래스의생성 자만생성되는가? 둘다실행된다 질문 2. 서브클래스의객체가생성될때서브클래스의생성자와슈퍼 클래스의생성자의실행순서는어떻게되는가? 슈퍼클래스의생성자가먼저실행된후서브클래스의생성자가실행된다.

슈퍼클래스와서브클래스의생성자간의호출및실행관계 생성자 A 생성자 B 생성자 C

서브클래스와슈퍼클래스의생성자짝맞추기 서브클래스의생성자가기본생성자인경우, 컴파일러는자동으로슈퍼클래스의기본생성자와짝을맺음 컴파일러가 public B() 에대한짝을찾을수없음 생성자 A 생성자 B 컴파일러에의해 Implicit super constructor A() is undefined. Must explicitly invoke another constructor 오류발생

서브클래스에매개변수가있는생성자는슈퍼클래스의어떤생성자와짝을이루는가? 생성자 A 매개변수생성자 B

슈퍼클래스의매개변수가있는생성자는사용하지못하는가? super() 서브클래스에서명시적으로슈퍼클 래스의생성자를선택호출할때사용 사용방식 super(parameter); 인자를이용하여슈퍼클래스의적당한생성자호출반드시서브클래스의생성자코드의제일첫라인에와야함 (this() 와같음 )

매개변수생성자 A5 매개변수생성자 B5

1. 다음은서브클래스 B 의생성자코드이다. 잘못된부분은? public b(){ System.out.println( 생성자 B ); super(10); 2. 아래의코드를실행하였을때그결과는? class A{ public A(){ System.out.println( 생성자 ); public A(int x){ System.out.println( 매개변수생성자A +x); class B extends A{ public B(){ super(30); System.out.println( 생성자B ); public B(int x){ System.out.println( 매개변수생성자B ); public class ConstructorEx3{ public static void main(string[] args){ B b; b = new B();

SuperTest 클래스의속성정의 이름 : name 사는곳 : addr SubTest 클래스의속성정의 SuperTest 클래스로부터상속받는다. 나이 : age 점수 : score Main 메소드 출력물처럼나오도록작성하시오. 자세한문제는 07_before.hwp파일을확인하세요

업캐스팅 (upcasting) 프로그램에서이루어지는자동타입변환 서브클래스의객체가슈퍼클래스타입으로변환되는것 슈퍼클래스레퍼런스가서브클래스객체를가리키게되는현상 객체내에있는모든멤버를접근할수없고슈퍼클래스의멤버만접근가능 class Person { class Student extends Person { Student s = new Student(); Person p = s; // 업캐스팅, 자동타입변환

class Person { String name; String id; public Person(String name) { this.name = name; class Student extends Person { String grade; String department; public Student(String name) { super(name); public class UpcastingEx { public static void main(string[] args) { Person p; Student s = new Student( 이재문 ); p = s; // 업캐스팅발생 System.out.println(p.name); // 오류없음 p.grade = A ; // 컴파일오류 p.department = Com ; // 컴파일오류

메소드오버라이딩 (Method Oberriding) 이란? 슈퍼클래스의메소드를서브클래스에서재정의하는것 슈퍼클래스의메소드이름, 인자타입및개수, 리턴타입등모든것동일하게정의 동적바인딩발생 오버라이딩된메소드가무조건실행되도록동적바인딩됨

1. 반드시슈퍼클래스메소드와동일한이름, 동일한호출인자, 반환타입을가져야한다. 2. 오버라이딩된메소드의접근지정자는슈퍼클래스의메소드의접근지정자보다좁아질수없다. public > protected > private 순으로지정범위가좁아진다. 3. 반환타입만다르면오류 4. static, private, 또는 final 메소드는오버라이딩될수없다. class Person { String name; String phone; static int ID; public void setname(string s) { name = s; public String getphone() { return phone; public static int getid() { return ID; class Professor extends Person { protected void setname(string s) { // 2번조건위배 public String getphone() { return phone; public void getphone(){ // 3번조건위배 public int getid() // 4번조건위배

슈퍼클래스생성 DObjec클래스 기본생성자와 draw() 메소드생성 서브클래스생성 DObjec클래스를상속받는클래스 3개를생성한다. Line, Rect, Circle 클래스 각클래스는 draw() 메소드를가지고있다. 상속관계에있는클래스의메소드오버라이딩이일어남을확인할수있는문제이다. MethodOverring 클래스생성 Main 메소드 객체를생성하고, draw() 메소드를접근함으로써결과가어떻게나오는지확인한다.

public class SuperObject { protected String name; public void paint() { draw(); public void draw() { System.out.println( Super Object ); public static void main(string [] args) { SuperObject a = new SuperObject(); a.paint(); class SuperObject { protected String name; 동적바인딩 public void paint() { draw(); 동적바인딩 public void draw() { System.out.println( Super Object ); public class SubObject extends SuperObject { public void draw() { System.out.println( Sub Object ); public static void main(string [] args) { SuperObject b = new SubObject(); b.paint();

super. 슈퍼클래스의멤버 서브클래스에서슈퍼클래스의멤 버를접근할때사용되는슈퍼클래 스타입의레퍼런스 상속관계에있는서브클래스에서 만사용됨 오버라이딩된슈퍼클래스의메소 드호출시사용 Super Sub class SuperObject { protected String name; public void paint() { draw(); public void draw() { System.out.println(name); public class SubObject extends SuperObject { protected String name; public void draw() { name = "Sub"; super.name = "Super"; super.draw(); System.out.println(name); public static void main(string [] args) { SuperObject b = new SubObject(); b.paint();

다음은오버로딩인가, 오버라이딩인가, 컴파일오류인가? class A{ void f(int x){ class b extends A{ void f(char c){ 다음프로그램의실행결과화면에무엇이출력되는가? class SuperObject{ public void paint(){ draw(); public void draw(){ draw(); System.out.println( super object ); class SubObject extends SuperObject{ public void paint(){ super.draw(); public void draw(){ System.out.println( sub object ); public class Sample{ public static void main(string[] args){ SuperObject b = new SubObject(); b.paint();

비교요소메소드오버로딩메소드오버라이딩 정의 같은클래스나상속관계에서동일한이름의메소 드중복작성 서브클래스에서슈퍼클래스에있는메소드와동일 한이름의메소드재작성 관계동일한클래스내혹은상속관계상속관계 목적 이름이같은여러개의메소드를중복정의하여 사용의편리성을향상 슈퍼클래스에구현된메소드를무시하고서브클래 스에서새로운기능의메소드를재정의하고자함 조건 메소드이름은반드시동일함. 메소드의인자의 개수나인자의타입이달라야성립 메소드의이름, 인자의타입, 인자의개수, 인자의리 턴타입등이모두동일하여야성립 바인딩 정적바인딩. 컴파일시에중복된메소드중호출 되는메소드결정 동적바인딩. 실행시간에오버라이딩된메소드찾아 호출