자바 객체 생성에 관한 질문입니다.
해비치
자바에서 추상 클래스 부분 공부하고 있습니다.
-vehicle.java
abstract class vehicle
{
abstract void printnumber();
}--car.java
public class car extends vehicle
{
int carnum;
public void printnumber(){
system.out.println(the car numer: + carnum);
}
public void drive(){
system.out.println(the car is being driven on express way!!);
}
public car1(int n){
carnum = n;
}
}
--yacht.java : 위의 car.java 와 같습니다.--vehicletest.java
public class vehicletest
{
public static void main(string[] args)
{
vehicle v[] = new vehicle[2];
v[0] = new car(1234);
v[1] = new yacht(5667);
for(int i=0; iv.length; i++){
v[i].printnumber();
if(v[i] instanceof car1) ((car1)v[i]).drive();
else if(v[i] instanceof yacht1) ((yacht1)v[i]).sail();
}
}
}
이럴경우에요..
vehicle.java 에서vehicle v[] = new vehicle[2];
v[0] = new car(1234);
v[1] = new yacht(5667);이 부분이 이해가 가질 않습니다.
보통 객체를 생성할때에는
a ab = new a(); 이런식으로 ab 의 타입이 a 이고 a타입의 객체를 생성하잖아요..당연히
int 형 으로 정수 값을 갖듯이요...
그런데 v[0] = new car(1234); 이부분처럼 v 는 vehicle 타입의 객체이지 car 타입의 객체가 아니잖아요?
이상황이 제 지금 기분으로는 마치 int 형 변수가 string형 값을 갖는거와 같거든요
어떻게 이해하면 될까요?