일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- #binary
- html plug-in
- html charset
- #1차원배열
- html id
- #bubbleSort
- html5 new tag
- #CallByAddress
- html code
- html object
- html video
- hyperledger transaction
- relative path
- #자바상속#자바이즈어#is~a
- #다차원포인터
- #android activity
- 토큰경제
- #2차원배열
- #JAVASCRIPT
- git flow
- #C++ 연산자함수오버로딩
- #C++ has~a
- 하이퍼레저패브릭
- #3차원배열
- html youtube
- border-box
- mac terminal command
- docker example
- html multimedia
- #성적관리프로그램
- Today
- Total
A sentimental robot
상속관계를 통한 다형성과 업캐스팅 본문
class Animal {
public void cry() {
}
}
class Dog extends Animal {
public void cry() {
System.out.println("A dog cries");
}
}
class Cat extends Animal {
public void cry() {
System.out.println("A cat cries");
}
}
public class Day1 {
public static void main(String[] args) {
Animal an = new Dog(); // upcasting
an.cry();
an=new Cat(); // 동적바인딩 > 다형성
an.cry();
}
}
class Animal { // Animal 클래스에서 사용되는 cry함수 바디 안에 실제 실행되는 코드가 없기 때문에 추상클래스나 인터페이스로 만드는 게 좋겠다.
public void cry() {
}
}
class Dog extends Animal {
public void cry() {
System.out.println("cryDog");
}
}
class Cat extends Animal {
public void cry() {
System.out.println("cryCat");
}
}
class Snow {
public void sound(Animal an) { // 다형성
an.cry();
}
}
public class Day1 {
public static void main(String[] args) {
Snow snow = new Snow();
snow.sound(new Cat()); // cryCat출력, 문제점-->cry함수를 호출할때마다 새로운 Cat객체 생성
snow.sound(new Dog()); // cryDog출력
}
}
코드 수정
abstract class AI {
abstract void enemy();
abstract void stop();
}
class Alpha extends AI {
void enemy() {
System.out.println("Im AlphaGo");
}
@Override
void stop() {
System.out.println("AlphaGo stop");
}
}
class Beta extends AI {
void enemy() {
System.out.println("Im BetaGo");
}
@Override
void stop() {
System.out.println("BetaGo stop");
}
}
class Baduk {
AI ai;
Baduk(AI ai) {
this.ai = ai; // 업캐스팅
}
void play() {
ai.enemy();
}
void stop() {
ai.stop();
}
}
public class Day1 {
public static void main(String[] args) {
Baduk ba = new Baduk(new Alpha());
ba.play();
ba.stop();
Baduk ba2 = new Baduk(new Beta());
ba2.play();
}
}
'Java' 카테고리의 다른 글
우주에서 랜덤하게 살아남기 (0) | 2018.01.08 |
---|---|
CRUD, LinkedList (0) | 2018.01.08 |
익명클래스, anonymous class (0) | 2018.01.04 |
중첩 인터페이스 (0) | 2018.01.04 |
Generic (0) | 2017.12.29 |