JAVA PROGRAMMING 실습 08.다형성

Similar documents
5장.key

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

PowerPoint Presentation

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - 2강

PowerPoint 프레젠테이션

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

PowerPoint 프레젠테이션

<4D F736F F F696E74202D205B4A415641C7C1B7CEB1D7B7A1B9D65D35C0E5BBF3BCD3B0FAB4D9C7FCBCBA>

JAVA PROGRAMMING 실습 05. 객체의 활용

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

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

PowerPoint 프레젠테이션

Design Issues

PowerPoint Presentation

PowerPoint Presentation

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

Microsoft PowerPoint - 5장

PowerPoint 프레젠테이션

제11장 프로세스와 쓰레드

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 07. 상속

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

JAVA PROGRAMMING 실습 02. 표준 입출력

JAVA PROGRAMMING 실습 09. 예외처리

PowerPoint Presentation

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

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

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

Microsoft PowerPoint - Lect04.pptx

JAVA PROGRAMMING 실습 05. 객체의 활용

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

C++ Programming

PowerPoint Presentation

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

Network Programming

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

슬라이드 1

오버라이딩 (Overriding)

Microsoft Word - EEL2 Lab4.docx

JUNIT 실습및발표

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

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

Microsoft PowerPoint - java2 [호환 모드]

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

PowerPoint Template

Microsoft PowerPoint - chap11

No Slide Title

PowerPoint Presentation

PowerPoint 프레젠테이션

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µå

예제 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

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft PowerPoint - 04-UDP Programming.ppt

교육자료

설계란 무엇인가?

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

자바 프로그래밍

PowerPoint Presentation

rmi_박준용_final.PDF

PowerPoint Presentation

Microsoft PowerPoint 장강의노트.ppt

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

슬라이드 1

Microsoft PowerPoint - Java7.pptx

2 단계 : 추상화 class 오리 { class 청둥오리 extends 오리 { class 물오리 extends 오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim();

슬라이드 1

05-class.key

PowerPoint Presentation

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

PowerPoint 프레젠테이션

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint Presentation

슬라이드 1

No Slide Title

JVM 메모리구조

PowerPoint 프레젠테이션

ThisJava ..

Microsoft PowerPoint - 13_UMLCoding(2010).pptx

슬라이드 1

JAVA PROGRAMMING 실습 02. 표준 입출력

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

Microsoft PowerPoint - Chapter 6.ppt

[ 프로젝트이름 ] : Project_Car [ 프로젝트를만든목적 ] : 임의의자동차판매소가있다고가정하고, 고객이원하는자동차의각부분을 Java 를이용하여객 체로생성하고, 그것을제어하는메소드를이용하여자동차객체를생성하는것이목표이다. [ 프로젝트패키지와클래스의내용설명 ] [

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - java1 [호환 모드]

Microsoft PowerPoint - 14주차 강의자료

금오공대 컴퓨터공학전공 강의자료

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

fundamentalOfCommandPattern_calmglow_pattern_jstorm_1.0_f…

Transcription:

2015 학년도 2 학기

1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스 ( 반드시, abstract 로선언 ) 추상메소드가없지만 abstract 로선언한클래스

추상클래스는객체를생성할수없다 abstract class DObject { public DObject next; 결과는? public DObject(){ next = null; abstract public void draw(); class AbstractErr{ public static void main(string[] args){ DObject obj; obj = new DObject(); obj.draw();

추상클래스의필요성 계층적상속관계를갖는클래스구조를만들때 설계와구현분리 슈퍼클래스에서는개념적특징정의 서브클래스에서구체적행위구현 추상클래스의상속 추상클래스를상속받아, 추상메소드를구현하지않으면서브클래스도추상클래스화 서브클래스도 abstract 로선언해야함. but, 서브클래스에서추상메소드구현시서브클래스는추상클래스화되지않음

해결 1.

class DObject { public DObject next; public DObject() { next = null; public void draw() { System.out.println( DObject draw ); abstract class DObject { public DObject next; 추상클래스로수정 public DObject() { next = null; abstract public void draw(); class Line extends DObject { public void draw() { System.out.println( Line ); class Rect extends DObject { public void draw() { System.out.println( Rect ); class Circle extends DObject { public void draw() { System.out.println( Circle );

다음추상클래스 Calculator 를상속받은 GoodCalc 클래스를구현하라. 결과값은

import java.util.scanner; abstract class Calculator { public abstract int add(int a, int b); // 두정수의합을구하여리턴 public abstract int subtract(int a, int b); // 두정수의차를구하여리턴 public abstract double average(int[] a); // 배열에저장된정수의평균을구해실수로반환 class GoodCalc extends Calculator { public int add(int a, int b) { return a+b; public int subtract(int a, int b) { return a - b; public double average(int[] a) { double sum = 0; for (int i = 0; i < a.length; i++) sum += a[i]; return sum/a.length; public static void main(string [] args) { Calculator c = new GoodCalc(); System.out.println(c.add(2,3)); System.out.println(c.add(2,-3)); System.out.println(c.average(new int [] {2,3,4 ));

인터페이스 (interface) 모든메소드가추상메소드인클래스 인터페이스는상수와메소드만가짐 ( 필드 X) 인터페이스선언 interface 키워드로선언된클래스 ex) public interface SerialDriver{ 인터페이스의특징 메소드선언에 abstract키워드를사용하지않아도됨 인터페이스의속성 public, static, final 으로가정 ( 생략가능 ) but 정의해주는게좋다. 객체생성불가 레퍼런스변수타입으로사용가능

인터페이스를이용하여다중상속구현 클래스는다중상속불가 인터페이스는명세서와같음 구현은블랙박스와같아인터페이스의사용자는구현에대해알필요없음 정의와구현을분리하여, 작업자가다양한구현을할수있음 구현 1 사용자 인터페이스 구현 2

인터페이스간상속가능 인터페이스가인터페이스를상속하여확장된인터페이스작성가능 다중상속허용

인터페이스구현 implements 키워드사용 여러개의인터페이스동시구현가능 상속과구현이동시에가능 interface USBMouseInterface { void mousemove(); void mouseclick(); public class MouseDriver implements USBMouseInterface { // 인터페이스구현 void mousemove() {... void mouseclick() {... // 추가적으로다른메소드를작성할수있다. int getstatus() {... int getbutton() {...

interface USBMouseInterface { void mousemove(); void mouseclick(); interface RollMouseInterface{ void roll(); public class MouseDriver implements USBMouseInterface, RollMouseInterface { void mousemove() {... void mouseclick() {... void roll(){ // 추가적으로다른메소드를작성할수있다. int getstatus() {... int getbutton() {...

다음의클래스를상속받고인터페이스를구현하는 SmartPhone 을작 성하여라

비교 내용 일반메소드포함가능 추상클래스 상수, 변수포함가능 모든서브클래스에공통된메소드가있는경우는추상클래스가적합 모든메소드가추상메소드 인터페이스 상수만포함가능 다중상속지원

인터페이스타입의객체참조변수에인터페이스를포함하는클래스의객체를할당 (!) 가능 단, 인터페이스타입의객체참조변수를통해서는인터페이스에선언된속성만접근가능.

결과는?

다형적참조 (polymorphic reference) 시점에따라다른유형의객체를가리킬수있는참조변수 하나의다형적참조를통해호출되는특정메소드는호출때마다바뀔수있음 상속을통한다형성 참조변수는한객체를가리킬수있고, 다른경우에는상속에의해관련이있는다른객체를참조할수있음

인터페이스를통한다형성 인터페이스의이름이한참조변수의데이터형으로사용가능 인터페이스를참조하는변수는그인터페이스를구현하는어떤클래스의어느객체를참조하기위해사용가능