반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 머신러닝
- cudnn
- web 사진
- tensorflow
- html
- web 개발
- KNeighborsClassifier
- broscoding
- 데이터전문기관
- classification
- discrete_scatter
- bccard
- CES 2O21 참가
- web 용어
- postorder
- vscode
- 웹 용어
- java역사
- C언어
- inorder
- web
- 결합전문기관
- CES 2O21 참여
- 재귀함수
- 자료구조
- Keras
- pycharm
- mglearn
- paragraph
- 대이터
Archives
- Today
- Total
bro's coding
java.Polymorphism(다형성) 본문
반응형
Polymorphism(다형성): Polymorphism은 객체 지향의 주요 개념
"하나의 메세지 방식으로 다향한 객체들이 각자의 방식으로 동작하는 성질"
"One Interface, Multiple Implements"
> 다형성 적용을 위해서는 계층 구조 형성이 필요
> 하나의 사용법(인터페이스)을 익히면 다양한 객체들을 동작시킬 수 있음
> 하나의 자동차 운전법만 알면 다양한 자동차(suv, 세단, 전기차)를 운전할 수 있음
> 플레이어 사용법을 익히면 다양한 플레이어(유튜브, 곰플레이어, cd player)를 사용할 수 있음
> 생산성 및 유지보수성 향상
Animal a = new Person();
// 부모 타입의 변수로 다양한 자식 객체를 참조할 수 있음
> 부모 타입의 변수로 다양한 자식 객체를 참조할 수 있음
Animal a1 = new Dog();
// 자식 객체를 부모타입의 변수에 참조 가능
> 자식 객체를 부모타입의 변수에 참조 가능
//reference variable
rv.pass(new Persion()) ---> public void pass(Animal a){}
rv.pass(new Dog()) ---> public void pass(Animal a){}
// 자식 객체를 전달하면 ---> 부모타입의 매개변수로 처리할 수 있음
> 자식 객체를 전달하면 ---> 부모타입의 매개변수로 처리할 수 있음
예제1
package step9;
class Animal {
public void eat() {
System.out.println("먹다");
}
}
class Person extends Animal {
// 메서드 오버라이딩
public void eat() {
System.out.println("사람이 수저로 먹다");
}
}
class Dog extends Animal {
}
public class TestPolymorphism1 {
public static void main(String[] args) {
// 부모 타입의 변수에 자식 객체 참조 가능
Animal a1 = new Person();
Animal a2 = new Dog();
// 오버라이딩된 메서드가 호출
a1.eat();
// 오버라이딩한 메서드가 없으므로 부모 메서드 호출
a2.eat();
}
}
/*
사람이 수저로 먹다
먹다
*/
예제2
package step10;
class Product {
}
class Computer extends Product {
private String name;
@Override
public String toString() {
return "Computer";
}
}
class Food extends Product {
private String name;
@Override
public String toString() {
return "Food";
}
}
class MarketService {
// Product 부모 타입의 매개변수로 다양한 자식 객체들을 처리할 수 있음
public void pay(Product p) { // 유지보수성 향상
System.out.println("결제 "+p);
}
}
public class TestPolymorphism2 {
public static void main(String[] args) {
MarketService service = new MarketService();
service.pay(new Computer());
service.pay(new Food());
}
}
반응형
'[IT] > java' 카테고리의 다른 글
java.final (0) | 2021.03.04 |
---|---|
java.static(정적) (0) | 2021.03.04 |
java.Polymorphism.ObjectCasting(캐스팅) (0) | 2021.03.02 |
java.Polymorphism.instanceof(객체 타입 비교) (0) | 2021.03.02 |
java.annotation(어노테이션) (0) | 2021.03.02 |
java.overriding.toString (0) | 2021.03.02 |
java.Object(오브젝트 클래스) (0) | 2021.03.02 |
java.Overriding(메서드 오버라이딩) (0) | 2021.03.02 |
Comments