对象的多态形态
1、引用多态
父类的引用可以指向本类的对象
父类的引用可以指向子类的对象
2、方法多态
我们想讲引用多态
a、创建父类
public class Transport {
}
b、创建子类
public class Airplane extends Transport {
}
……
c、实现
public class InitialTransport {
public static void main(String[] args) {
Transport p1=new Transport();//父类创建自己的对象
Transport p2=new Airplane();//父类引用子类的对象
Transport p3=new Steamboat();
Transport p4=new Bus();
//Bus p5=new Transport();//子类不能够引用父类的对象
}
}
方法多态
父类中添加一个方法
public class Transport {
public void sets(){
System.out.println("交通工具有座位");
}
}
子类中重写
package com.imooc;
public class Steamboat extends Transport{
@Override
public void sets() {
// TODO Auto-generated method stub
System.out.println("游艇有300个座位");
}
}
子类中不重写方法(将调用继承的方法)
public class Bus extends Transport {
}
子类中有父类中没有的方法,能用多态调用该方法吗?
package com.imooc;
public class Airplane extends Transport {
@Override
public void sets() {
// TODO Auto-generated method stub
System.out.println("飞机有1000个座位");
}
//父类中没有的方法
private void fly() {
// TODO Auto-generated method stub
System.out.println("飞机可以飞");
}
}
方法的实现
package com.imooc;
public class InitialTransport {
public static void main(String[] args) {
Transport p1=new Transport();//父类创建自己的对象
Transport p2=new Airplane();//父类引用子类的对象
Transport p3=new Steamboat();
Transport p4=new Bus();//特例1:bus 中没有重写sets方法,调用的将是继承的方法
//Bus p5=new Transport();//子类不能够引用父类的对象
p1.sets();
p2.sets();
p4.sets();
//p2.fly();用父类引用子类的特殊方法不能实现
}
}
运算结果
交通工具有座位
飞机有1000个座位
交通工具有座位