Java多态
1.多态是同一个行为具有多个不同表现形式或形态的能力。
2.多态就是同一个接口,使用不同的实例而执行不同操作。
多态的优点:
- 消除类型之间的耦合关系
- 可替换性
- 可扩充性
- 接口性
- 灵活性
- 简化性
多态存在的三个必要条件:
- 继承
- 重写
- 父类引用指向子类对象
举个例子:
//鱼香肉丝(子类)
public class yxrs extends Cai{
@Override
public void Show() {
// TODO Auto-generated method stub
System.out.println("鱼香肉丝");
}
}
//宫保鸡丁(子类)
public class gbjd extends Cai{
@Override
public void Show() {
// TODO Auto-generated method stub
System.out.println("宫保鸡丁");
}
}
public class Factory {
//生产子类对象
public static Cai product(String str){
if(str.equals("宫保鸡丁"))
{
return new gbjd();
}
else if(str.equals("鱼香肉丝"))
{
return new yxrs();
}
else
{
return null;
}
}
}
//抽象类
public abstract class Cai {
public abstract void Show();
}
//测试类
import java.util.Scanner;
public class Test {
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
System.out.print("输入要点的菜(1.宫保鸡丁 2.鱼香肉丝):");
int tag=input.nextInt();
Cai cai=null;
if(tag==1)
{
cai=Factory.product("宫保鸡丁");
}
else
{
cai=Factory.product("鱼香肉丝");
}
cai.Show();
}
}
抽象类可以想象成为饭店;而鱼香肉丝、宫保鸡丁是属于饭店的子类(也就是菜);生产子类对象可以想象为厨师来做出这些菜。
instanceof运算符
instanceof运算符返回一个布尔值,表示对象是否为某个构造函数的实例。instanceof运算符的左边是实例对象,右边是构造函数,它会检查右边构造函数的原型对象(prototype),是否在左边对象的原型链上。由于instanceof检查整个原型链,因此同一个实例对象,可能会对多个构造函数都返回true。
注意:instanceof运算符只能用于对象,不适用原始类型的值;对于undefined和null,instanceof运算符总是返回false。