Goru
[JAVA]다형성 본문
다형성이란?
객체지향개념에서 다형성이란 '여러 가지 형태를 가질 수 있는 능력'을 의미하며, 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현하였다.
class Tv{
boolean power; //전원상태 (on/off)
int channel; //채널
void power() { power = !power; }
void channelUp { ++ channel; }
void channelDown{ -- channel; }
}
class CaptionTv extends Tv{
String text; //캡션을 보여 주기 위한 문자열
void caption() //{/*내용생략*/}
}
조상타입의 참조변수로 자손타입의 인스턴스를 참조할 수 있다. 반대로 자손타입의 참조변수로 조상타입의 인스턴스를 참조할 수는 없다. |
참조변수의 형변환
기본형 변수와 같이 참조변수도 형변환이 가능하다. 단, 서로 상속관계에 있는 클래스사이에서만 가능하기 떄문에 자손타입의 참조변수를 조상타입의 참조변수로, 조상타입의 참조변수를 자손타입의 참조변소로의 형 변환만 가능하다.
자손타입 -> 조상타입(Up-casting) : 형변환 생략가능 자손타입 <- 조상타입(Down-casting) : 형변환 생략불가 |
class Car{
string color;
int door;
void drive(){ //운전하는 기능
System.out.println("drive, Brrrr~");
}
void stop(){ //멈추는 기능
System.out.println("stop!!!!");
}
}
class FireEngine extends Car{ // 소방차
void water(){ //물 뿌리는 기능
System.out.println("water!!!");
}
}
class Ambulance extends Car{ //앰뷸런스
void siren(){ //사이렌을 울리는 기능
System.out.println("siren~~~");
}
}
public class CastingTest1 {
public static void main(String[] args) {
Car car = null;
FireEngine fe =new FireEngine();
FireEngine fe2 = null;
fe.water();
car = fe;// car = (Car)fe;에서 형변환이 생략된 형태이다.
// car.water();
fe2 = (FireEngine)car; //자손타입 <- 조상타입
fe2.water();
}
}
class Car{
String color;
int door;
void drive() { // 운전하는 기능
System.out.println("drive, Brrrr~");
}
void stop() { // 멈추는 기능
System.out.println("stop!!!");
}
}
class FireEngine extends Car{ //소방차
void water() { //물을 뿌리는 기능
System.out.println("water!!!");
}
}
'Java' 카테고리의 다른 글
[Java]instanceof 연산자 (0) | 2022.01.27 |
---|---|
[JAVA]제어자 (0) | 2022.01.21 |
[Java]package 와 import (0) | 2022.01.20 |
[Java] 오버라이딩 (0) | 2022.01.20 |
[Java] 클래스간의 관계- 포함관계 (0) | 2022.01.19 |