问答详情
源自:10-1 Java 中的多态

父类,子类 多态

 package immoc;

public class Transtration {
 public static void main(String[] args){
double client;
double style;
double velocity;
Transtration obj1=new car();
Transtration obj2=new steamship();
Transtration obj3=new plan();
obj1.ship();

 }
}
  class car extends Transtration{
  public void stration(double client){
   client=30.0;
  System.out.println("汽车在陆地上"+client);}
 
  }
  class steamship extends Transtration{
  public void ship(double client ){
  client=40.0;
  System.out.println("轮般在海上运输"+client); 
  }

  }
  class plan extends Transtration{
  public void air(double client){
  client=50.0;
  System.out.println("飞机在天空"+client);    
  }
  
  }

父类创建对象 和引用那里不太会,,,,

提问者:xibu 2015-07-31 09:11

个回答

  • 街上叫卖的小蛐蛐
    2015-08-02 23:32:19

    obj1.ship();出问题了。

    引用能调用什么方法,看的是这个引用的类型,就是说obj1只能调用他这个类(父类)里方法。

    而你的父类中只有一个main方法,你只要在类里面建一个ship()方法就行了,只是不太符合常理,毕竟不是所有的交通工具都可以像船一样航行。

    还有还有,如果可以调用ship方法,也一定要再回过头去看一下这个方法需不需要参数。

  • DH111
    2015-08-01 12:50:36

    运行不出来吧,Transtration obj1=new car();是引用父类类型指向子类对象,你的这个代码里Transportation这个父类里没有方法,因此Transportation这个父类只有一个隐藏的同名无参构造方法 也就是Transportation(); 既然是引用父类类型指向子类对象,就是说obj1这个子类car的对象他跟父类的类型是一样的,只有一个无参的构造方法,这个无参的构造方法是car类里隐藏的car();所以你接下来的这些ship等等自己重写的方法在obj1里是没有的,所以调用不了,要调用只能调用obj1.car(); 最好是car obj1 = new car();这样就能随便调用你自己重写的方法了。