ݺߣ

ݺߣShare a Scribd company logo
자바와 다형성
Kookmin University
Graduate School of Busuness IT
e-Government System Development
예비 석사과정 안재열
구현구현
상속상속,,접근제한자접근제한자,,인스턴스화인스턴스화
Object-Oriented Programming
시작
객체 지향 프로그래밍
Object-Oriented Programming ; OOP
가시적
자동차
사람
Object
사람
논리적
포유류
달리기
생각
시작
객체 지향 프로그래밍
Object-Oriented Programming ; OOP
가시적 사람
Object
가시적 사람
논리적 포유류
Object
Object
포유류
정적요소 동적요소
• 눈
• 코
• 입
• 귀
• 말하다
• 걷기
• 뛰기
• 출산 및 수유
Object
Class Mammals
• 눈,코,입,귀 - Variable
• 달리기 – Method
Mammals.java
Class Mammals {
Eyes HumanEyes;
Nose HumanNose;
Mouse HumanMouse;• 달리기 – Method
(Function)
• 걷기 - Method
• 출산 및 수유 -
Method
Mouse HumanMouse;
Ear HumanEar;
void run(){}
void walk(){}
void milk()
……
}
Object
사람
정적요소 동적요소
• 눈
• 코
• 입
• 귀
• 말하다
• 걷기
• 뛰기
• 출산 및 수유
• 요리, 웹서핑,공부…
Object
Class Human
• 눈,코,입,귀 - Variable
• 달리기 – Method
(Function)
Human.java
Class Human{
Eyes HumanEyes;
Nose HumanNose;
Mouse HumanMouse;(Function)
• 걷기 - Method
• 출산 및 수유 -
Method
• 요리 - Method
Mouse HumanMouse;
Ear HumanEar;
void run(){}
void walk(){}
void cook(){}
void webserching(){}
void Studying(){}
}
비교
사람
정적요소
• 눈,코,입,귀
동적요소
• 말하다,걷기,뛰기,출산 및 수유
• 요리, 웹서핑,공부…
포유류
정적요소
• 눈,코,입,귀
동적요소
• 말하다,걷기,뛰기,출산 및 수유
상속
사람공통사항을 모아
하나의 논리적
개념으로 만들었다.
개원숭이
포유류
상속
포유류
사람
사람
포유류사람 포유류
개념의 범위 기능의 범위
상속
사람사람
상속
포유류포유류포유류
상속
(Inheritance)
상속
Mammals.java
Class Mammals {
Eyes HumanEyes;
Nose HumanNose;
Mouse HumanMouse;
Human.java
Class Human{
Eyes HumanEyes;
Nose HumanNose;
Mouse HumanMouse;
Ear HumanEar;Mouse HumanMouse;
Ear HumanEar;
void run(){}
void walk(){}
void milk()
}
Ear HumanEar;
void run(){}
void walk(){}
void cook(){}
void webserching(){}
void Studying(){}
}
상속
Mammals.java
Class Mammals {
Eyes HumanEyes;
Nose HumanNose;
Mouse HumanMouse;
Human.java
Class Human extends Mammals{
void cook(){}
void webserching(){}
void Studying(){}
기
준
Mouse HumanMouse;
Ear HumanEar;
void run(){}
void walk(){}
void milk()
}
void Studying(){}
}
SuperClass
ParentsClass
SubClass
ChildClass
thissuper
상속
Mammals.java
Class Mammals {
Eyes HumanEyes;
Nose HumanNose;
Mouse HumanMouse;
Human.java
Class Human extends Mammals{
void cook(){}
void webserching(){}
void Studying(){}Mouse HumanMouse;
Ear HumanEar;
void run(){}
void walk(){}
void milk()
}
void Studying(){}
}
Human 의 기능을 사용 시
사람의 걷기 = this.walk()
포유류의 걷기 = super.walk()
접근제어자(access modifier)
제어자 대상 설명
Private 메소드
멤버변수
같은 클래스 내에서만 접근가능
Default 클래스, 메소드,
멤버변수
같은 패키지 내에서만 접근가능
멤버변수
Protected 메소드, 멤버변
수
서브클래스까지 접근가능
public 클래스, 메소드,
멤버변수
모든 접근 허가
Get,Set 메소드 및 압축
Class Sum{
private int a;
private int b;
Public void SetA(int a){this a = a;}
Public void GetA(){return a;}
Public void SetB(int b){this b = b;}
조건을 이용하여 보안성 향상
Public void SetB(int b){this b = b;}
Public void GetB(){return b;}
Public void hap(){
System.out.println(this.a+this.b);
}}
Abstract Class & Interface
Human 의 기능을 사용 시
사람의 걷기 = this.walk()
포유류의 걷기 = super.walk()
추상적(Abstract)이다.
Abstract Class & Interface
• 추상(미 완성된) 메소드를 함께 보유
• 인스턴스화 불가능
• 상속받은 클래스는 반드시 미완성
메소드를 오버라이딩 해야함
Abstract
Class
• 미완성된 메소드와 Static Final 형의
멤버변수만 보유
• Implements 를 사용하여 관계 맺음.
• 서브클래스는 모든 인터페이스의 메
소드를 오버라이딩 해야 함.
Interface
인스턴스와 생성자
인스턴스(객체)
핸들러
(레퍼런스변수)
클래스
Human tom new Human();
Class Human
Human tom new Human();
Human jey new Human();
인스턴스화
인스턴스와 생성자
클래스 정보
클래스 변수
(Static Variable)
매개변수
메소드
인스턴스
배열
Class
Human
Human tom
Human jeynew Human();
인스턴스와 생성자
• 인스턴스를 생성시 매개변수들에 대하여 초기값을
부여하는 메소드
• 정수형 0, 실수형 0.0, 레퍼런스,문자형 null
• 클래스명 () ; Sum();
• 오버로딩을 통해 다양한 방식으로 구성이 가능하다.
생성자
Class Sum{
int a;
int b;
Sum(){} //Default Constructor , 생략가능
Sum(int a, int b){this.a =a, this.b=b} // Constructor Overloading
Sum(AVG instans){ this.a = instans.a} // Constructor Overloading
Public void hap(){
System.out.println(this.a+this.b);
}}
다형성
레퍼런스 매개변수가 부모 클래스형이면,
자식클래스 형태의 생성자를 이용하여 만들어진,
인스턴스를 핸들링 할 수 있지 않을까?
예) Mammal Tom = new Human();
다형성
인스턴스(객체)
핸들러
(레퍼런스변수)
클래스
Class Student
Student tom new Student();
Student t new Student();
인스턴스(객체)
핸들러
(레퍼런스변수)
클래스
Class Person Human tom new Human();
구현 (상속)
구현 (상속)
구현 (상속)
구현 (상속)
구현 (상속)
구현 (상속)
구현 (다형성)
Person t = (Person) new
Student()Student()
형 변환은 생략 할 수 있다.
구현 (다형성)
구현 (다형성)
구현 (다형성)
구현 (다형성)
구현 (다형성)
※발견 규칙 1
메소드는 오버라이드가 가능하다.
하지만, 변수는 오버라이드가 불가능하다.
※발견 규칙 2
부모 클래스를 객체화시, 생성자를 자식 클래스로 이용 할 때,
중복되는 메소드 영역만 오버라이드 되어 생성된다.
부모클래스가 알지 못하는 자식의 메소드는 사용이 불가능하다.
다형성 정리
1)메소드 중복정의 (Method Overloading)
2)메소드 재정의 (Method Overriding)
3)상위클래스로형 변환 (Upcasting)
4)상속 (Inheritance)
위 네 가지를 통해, 기존에 만들어진 코드를 수정하거나 활용을 할 때 유용하다.
위 네가지 이유가 자바의 다형성의 조건으로 생각된다.

More Related Content

Java 다형성