什么是多态
多态(polymorphism)是具有多种表现形态的特征,同一个实现接口使用不同的实例而执行不同的操作。
多态的优点
1.消除类型之间的耦合关系
2. 可替换性
3. 可扩充性
4. 接口性
5. 灵活性
6. 简化性
实现多态的必要条件
- 继承
- 重写
- 父类类型指向子类实例
多态的实现
public abstract calss Common{
public abstract gethom();
public abstract info();
}
public class SE extends Common{
public void gethome(){}//重写父类定义SE回家的方法
public void info(){}//重写父类SE的信息方法
public void present(){}//子类特有方法
}
public class PM extends Common{
public void gethome(){}//重写父类定义PM回家的方法
public void info(){}//重写父类PM的信息方法
public void eat(){}//子类特有方法
}
//定义一个测试类
public class test(){
public static void main(String[] args){
//多态实现之一
Common com=new SE();// 父类类型指向子类实例子类到父类的转换(向上转型)
com.gethom();//只能调用父类方法或重写父类的方法
com.info();// gethom() info()调用子类重写父类的方法
com.present();//编译错误不能调用子类自身特有方法 present()
//多态实现之二
show(new SE());//父类类型作为参数 子类作为实例
show(new PM());
}
public static void show(Common co){
co.info();
if(co instanceof SE){//使用interface判断类型
SE se=(SE)co;//父类到子类的转换(向下转型)
se.present();//调用 SE类特有方法
}else if(co instanceof PM){
PM pm=(PM)co;
pm.eat();//PM类特有方法
}
//instanceof 运算符用于判断类型 是否属于一个类或接口返回值为Boolean类型
//比较的类型必须存在继承关系否则编译错误
}
}