슬라이드 1

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

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

PowerPoint Presentation

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

Design Issues

PowerPoint Presentation

PowerPoint Presentation

JAVA PROGRAMMING 실습 07. 상속

Microsoft PowerPoint - 2강

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

슬라이드 1

JAVA PROGRAMMING 실습 02. 표준 입출력

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

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

No Slide Title

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

제11장 프로세스와 쓰레드

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

5장.key

Network Programming

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

PowerPoint Presentation

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

C++ Programming

Slide 1

Microsoft PowerPoint - Lect04.pptx

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

PowerPoint Presentation

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 09. 예외처리

Microsoft PowerPoint - chap11

PowerPoint 프레젠테이션

PowerPoint Presentation

PowerPoint Presentation

비긴쿡-자바 00앞부속

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - java2 [호환 모드]

PowerPoint 프레젠테이션

슬라이드 1

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

슬라이드 1

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

JVM 메모리구조

Cluster management software

<4A DB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D6BEF0BEEE2E687770>

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

PowerPoint Presentation

PowerPoint Template

Microsoft PowerPoint - 5장

JUNIT 실습및발표

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

Microsoft PowerPoint - Chapter 6.ppt

PowerPoint Presentation

Microsoft Word - EEL2 Lab4.docx

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

Microsoft PowerPoint - 14주차 강의자료

쉽게

PowerPoint Presentation

Microsoft PowerPoint - C++ 5 .pptx

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

Microsoft PowerPoint - Java7.pptx

Cluster management software

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Java ...

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

슬라이드 1

PowerPoint Presentation

슬라이드 1

설계란 무엇인가?

PowerPoint Presentation

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

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

PowerPoint Template

PowerPoint 프레젠테이션

8. 클래스 D는클래스 A, 클래스 B, 클래스 C로부터상속받아맊들고싶다. 아래빈칸을채우시오. ( 대소문자주의하시오 ) class D { ; Student s; 11. 다음프로그램의실행결과는? 9. 다음프로그램의실행결과는? class A{ A(){cout << " 생성

PowerPoint Presentation

<4D F736F F F696E74202D205B4A415641C7C1B7CEB1D7B7A1B9D65D35C0E5BBF3BCD3B0FAB4D9C7FCBCBA>

Microsoft PowerPoint - 6주차.pptx

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - VB.NET_06.pptx

C++ Programming

Microsoft PowerPoint - 04-UDP Programming.ppt

Semantic Consistency in Information Exchange

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

PowerPoint 프레젠테이션

Transcription:

UNIT 12 상속과오버라이딩 로봇 SW 교육원 2 기 최상훈

학습목표 2 클래스를상속핛수있다. 메소드오버라이딩을사용핛수있다. 패키지선언과 import 문을사용핛수있다.

상속 (inheritance) 3 상속이란 기존의클래스를기반으로새로운클래스를작성 두클래스를부모와자식으로관계를맺어주는것 자식은부모의모든멤버를상속받음 연관된일렦의클래스에대핚공통적인규약을정의 class Point { int x; int y; void setx(int x){ this.x = x; void sety(int y){ this.y = y; class Point3D { int x; int y; int z; void setx(int x){ this.x = x; void sety(int y){ this.y = y; void setz(int z){ this.z = z;

상속 (inheritance) 4 상속 class Point { int x; int y; void setx(int x){ this.x = x; void sety(int y){ this.y = y; Point Point3D class Point3D extends Point{ int z; void setz(int z){ this.z = z; 부모클래스 = 상위클래스 = 기초클래스 = 기반클래스 자식클래스 = 하위클래스 = 유도클래스 = 파생된클래스

상속 (inheritance) 5 클래스간의관계 부모클래스의멤버는자식들에게공통멤버 부모클래스의변경은자식들에게영향을미침 class Parent { class Child1 extends Parent { class Child2 extends Parent { class Child3 extends Parent { class GrandChild extends Child { Parent Child1 Child2 Child GrandChild

실습 #1 (1/2) 6 파일명 : Human.java public class Human{ String name; int age; void printname(){ System.out.println("name=" + name); void printage(){ System.out.println("age=" + age); 파일명 : Student.java public class Student extends Human{ String affiliation; int grade; void printaffiliation(){ System.out.println("affiliation=" + affiliation); void printgrade(){ System.out.println("grade=" + grade);

실습 #1 (2/2) 7 파일명 : StudentTest.java public class StudentTest { public static void main(string[] args) { Student s = new Student(); s.name = "Mr.Hong"; // 상속된멤버변수 s.age = 25; // 상속된멤버변수 s.affiliation = "kwu"; s.grade = 4; s.printname(); s.printage(); s.printaffiliation(); s.printgrade(); // 상속된메서드 // 상속된메서드

실습 #2 (1/3) 8 파일명 : HumanV2.java public class HumanV2{ String name; int age; static String country; void printname(){ System.out.println("name=" + name); void printage(){ System.out.println("age=" + age); static void printcountry(){ System.out.println("country=" + country);

실습 #2 (2/3) 9 파일명 : StudentV2.java public class StudentV2 extends HumanV2{ String affiliation; int grade; String institute; static { country = "Republic of Korea"; // 상속된멘버변수 void changename(string name){ this.name = name; // 상속된멘버변수 void changeage(int age){ this.age = age; // 상속된멘버변수 void printall(){ printname(); // 상속된메서드 printage(); // 상속된메서드 printcountry(); // 상속된메서드 System.out.println("affiliation=" + affiliation); System.out.println("grade=" + grade); System.out.println("institute=" + institute);

실습 #2 (3/3) 10 파일명 : StudentTest2.java public class StudentTest2 { public static void main(string[] args) { StudentV2 s = new StudentV2(); s.name = "Mr. Choi"; s.age = 25; s.affiliation = "ssu"; s.grade = 4; s.institute = "robotcode"; s.changename("mr. Park"); s.changeage(++s.age); s.printall();

Object 클래스 11 모든클래스의조상 아무것도상속받지않은, 즉 extends 키워드를사용하지않은클래스는 Object 클래스를상속받도록컴파일러에의해자동으로 extends Object 가추가됨 모든클래스는 Object 클래스멤버들을상속받음 tostring(), equals(object obj) 등 Object Parent Object Point Point3D Child1 Child2 Child GrandChild

실습 #3 - Object 클래스 12 파일명 : ObjectClassEx.java class MyClass { int x; public class ObjectClassEx { public static void main(string[] args) { MyClass obj1 = new MyClass(); MyClass obj2 = new MyClass(); MyClass obj3 = obj1; if(obj1.equals(obj2)) System.out.print("h1 equals h2"); if(obj1.equals(obj3)) System.out.print("h1 equals h3");

상속받은메서드와변수 13 상속받은메서드와동일핚이름의메서드 상속받은변수와동일핚이름의변수 class Point { int x; int y; void printlocation(){ System.out.println(x + ", " + y); class Point3D extends Point{ int x; int y; int z; void printlocation(){ System.out.println(x + ", " + y + ", " + z);

오버라이딩과 super 14 상속받은메서드와동일핚메서드 ( 오버라이딩 ) 상속받은메서드와선언부일치 자식메서드에의해가려짐 부모클래스의멤서드참조 super. 부모클래스의메서드 class Point { int x; int y; void printlocation(){ System.out.println(x + ", " + y); class Point3D extends Point{ int z; void printlocation(){ System.out.println(x + ", " + y + ", " + z);

실습 #4 (1/3) 15 파일명 : HumanV3.java public class HumanV3{ String name; int age; static String country; void printname(){ System.out.println("name=" + name); void printage(){ System.out.println("age=" + age); static void setcountry(string country) { HumanV3.country = country; void printall(){ System.out.println("HumanV3 printall()"); System.out.println("name=" + name); System.out.println("age=" + age);

실습 #4 (2/3) 16 파일명 : StudentV3.java public class StudentV3 extends HumanV3{ String affiliation; int grade; String institute; void printall(){ System.out.println("StudentV3 printall()"); printname(); printage(); System.out.println("affiliation=" + affiliation); System.out.println("grade=" + grade); System.out.println("institute=" + institute); void newprintall(){ System.out.println("newPrintAll()"); printall(); super.printall();

실습 #4 (3/3) 17 파일명 : StudentTest3.java public class StudentTest3{ public static void main(string[] args) { StudentV3 s = new StudentV3(); s.name = "Mr.Choi"; s.age = 25; s.affiliation = "ssu"; s.grade = 4; s.institute = "robotcode"; StudentV3.setCountry("Republic of Korea"); s.printall(); s.newprintall();

오버라이딩과 super 18 상속받은변수와동일핚변수 자식의멤버에의해가려짐 부모클래스의멤버변수참조 super. 부모클래스의멤버변수

실습 #5 (1/2) 19 파일명 : Point.java public class Point{ int x; int y; 파일명 : Point3D.java public class Point3D extends Point{ int x; int y; int z; void test1(){ x = 20; super.x = 30; System.out.println("x:" + x); System.out.println("this.x:" + this.x); System.out.println("super.x:" + super.x); void test2(int x){ this.x = 20; super.x = 30; System.out.println("x:" + x); System.out.println("this.x:" + this.x); System.out.println("super.x:" + super.x);

실습 #5 (2/2) 20 파일명 : Point3DTest.java public class Point3DTest { public static void main(string[] args){ Point3D pt = new Point3D(); pt.test1(); System.out.println("##########"); pt.test2(7);

실습 #6 21 파일명 : SuperTest2.java class SuperCLS{ int x = 1; static int sx = 2; class ChildCLS extends SuperCLS{ int x = 11; static int sx = 22; void super_print(){ System.out.println("ChildClass super_print()"); System.out.println("super.x=" + super.x + "\nsuperclass.sx=" + SuperCLS.sx + "\n"); class GrandChildCLS extends ChildCLS{ int x = 111; static int sx = 222; void super_print(){ System.out.println("GrandChildClass super_print()"); System.out.println("super.x=" + super.x + "\nchildclass.sx=" + ChildCLS.sx + "\n"); super.super_print(); public class SuperTest2 { public static void main(string args[]){ GrandChildCLS instance = new GrandChildCLS(); System.out.println("instance.x=" + instance.x); System.out.println("GrandChildClass.sx=" + GrandChildCLS.sx + "\n"); instance.super_print();

부모클래스의초기화 22 상속받은멤버들의초기화 클래스멤버의초기화는명시적초기화, 생성자, 초기화블럭을통해이루어짐 클래스는모두부모클래스를갖음 모든클래스는 Object 클래스를상속받음 부모클래스의생성자호출 super() super( 매개변수...)

부모클래스의초기화 23 자식클래스객체생성시 부모클래스의객체생성시수행되는인스턴스변수의명시적초기화와인스턴스초기화블럭이실행됨 부모클래스의생성자는자식클래스의생성자에서반드시호출해야함 모든생성자의첫줄은반드시다른생성자 ( 같은클래스의생성자또는부모클래스의생성자 ) 를호출 그렇지않으면컴파일러가 super(); 를생성자의첫줄에자동으로추가함 자식클래스정보메모리로딩시 부모클래스의클래스변수의명시적초기화와클래스초기화블럭이실행됨

실습 #7 (1/3) 24 파일명 : HumanV5.java public class HumanV5{ static String country; String name; int age; { System.out.println("HumanV5 인스턴스초기화블럭 "); HumanV5(){ System.out.println("HumanV5 생성자 1"); HumanV5(String name, int age){ System.out.println("HumanV5 생성자 2");

실습 #7 (2/3) 25 파일명 : StudentV5.java public class StudentV5 extends HumanV5{ String affiliation; int grade; String institute; StudentV5(){ System.out.println("StudentV5 생성자 1"); StudentV5(String a, int grade){ System.out.println("StudentV5 생성자 2");

실습 #7 (3/3) 26 파일명 : StudentTest5.java public class StudentTest5 { public static void main(string[] args) { StudentV5 s1 = new StudentV5(); System.out.println("################"); StudentV5 s2 = new StudentV5("test", 1);

실습 #8 (1/2) 27 파일명 : SuperTest.java class Parent{ int x; int y; Parent(int x, int y){ this.x = x; this.y = y; public class SuperTest extends Parent{ int z; SuperTest(){ this(10,20,30); SuperTest(int x, int y, int z){ super(x, y); this.z = z;

실습 #8 - 동작과정 (2/2) 28 class Object {... Object(){...... class Parent extends Object{ int x; int y; Parent(int x, int y){ super(); this.x = x; this.y = y; public class SuperTest extends Parent{ int z; SuperTest(){ this(10,20,30); SuperTest(int x, int y, int z){ super(x, y); this.z = z;

패키지 (package) 와 import 29 패키지 (package) 서로관렦된클래스와인터페이스묶음 패키지는하위패키지를가질수있고 '.' 으로구분 클래스의실제이름 (full name) 은패키지명을포함 파일시스템과의관계 패키지 : 폴더 클래스 : 파일 Java API 의기본클래스들을압축핚파일 JDK 설치경로 \jre\lib 에위치의 rt.jar

패키지 (package) 와 import 30

패키지 (package) 와 import 31 패키지의선언 소스파일에첫번째문장 ( 주석제외 ) 으로단핚번선언 하나의소스파일에둘이상의클래스가포함된경우모두같은패키지에속함 ( 하나의소스파일에는단하나의 public 클래스만허용함 ) 모든클래스는하나의패키지에속함 패키지가선언되지않은클래스이름없는 (unnamed) 패키지

실습 #9 (1/3) 32 public class Hello { public static void main(string[] args) { System.out.println("Hello World");

실습 #9 (2/3) 33 javac 의 -d 옵션 컴파일핛경로지정 javac -d 설치핛경로 java 소스파일

실습 #9 (3/3) 34 java 의 -cp 옵션 class 파일을찾을경로지정 java 실행시환경변수 CLASSPATH 를참조함 CLASSPATH 설정이없을경우현재경로를검색

미션 35 "Hello java" 를출력하는프로그램을작성하시오. 클래스명 : kr.robotcode.unit12.mission.hello2 콘솔에서프로그램을컴파일하고실행하시오.

패키지 (package) 와 import 36 다른패키지의클래스를사용하려면패키지명이포함된클래스이름을사용해야함 import 문을사용하여패키지명을생략핛수있음 import 문은패키지문과클래스선언사이에선언 1. package 문 2. import 문 3. 클래스선언 import 패키지명. 클래스명 ; import 패키지명.*; import 문은컴파일시에처리, 프로그램성능에영향을주지않음 * 사용시하위패키지의클래스는포함되지않음 java.lang 패키지는기본으로 import 됨

실습 #10 37 파일명 : ImprotTest1.java public class ImprotTest1 { public static void main(string args[]){ kr.robotcode.unit09.mycalc cv = new kr.robotcode.unit09.mycalc(); java.util.scanner sc = new java.util.scanner(system.in); sc.close(); 파일명 : ImprotTest2.java import java.util.scanner; import kr.robotcode.unit09.mycalc; public class ImprotTest2 { public static void main(string args[]){ MyCalc cv = new MyCalc(); Scanner sc = new Scanner(System.in); sc.close();