多态在java中有很多体现,比如方法重载和方法重写
我们一般考虑多态是指对象的多态性
概念:多态是指统一操作作用于不同对象,可以有不同的解释,产生多种执行结果
多态的前提:
1、、必须要继承或实现的关系
2、、必须要有重写方法
3、、让父类的引用持有子类对象或者接口的引用持有其实现类的对象
多态的优点:
增强了代码的扩展性和后期的维护性
多态的局限性:
父类的引用不能访问子类中的特殊成员
类型转换(上下转型)
向上转型:安全的,自动转型
例,,Animal ani = new dog();
向下转型:不安全的,需要手动强制类型转换
例。。Dog dog = (Dog)ani;
通常会在向下转型的时候先判断对象的类型和目标类型是否一致
语法:
Boolean 结果 = 对象的引用 instanceof 类名
结果:true代表类型匹配,false代表不匹配
(对象的引用:指向了需要类型转换的对象。 类名:类型转换的目标类型)
代码示例:
一个Animal的父类,有两个属性,name和food
class Animal{
String name;
String food;
public Animal(String name,String food){
this.name = name;
this.food = food;
}
public void action(){
System.out.println(name + "正在吃" + food);
}
}
一个Dog类继承Animal
class Dog extends Animal{
public Dog(String name,String food){
super(name,food);
}
}
一个Cat类继承Animal
class Cat extends Animal{
public Cat (String name,String food){
super(name,food);
}
}
向上转型是安全的,下面可以这样写:
Animal dog = new Dog("狗狗","骨头");
dog.action();
Animal cat= new Cat("咪咪","小鱼");
cat.action();
向下转型是不安全的,可以先用ani instanceof Dog判断
Dog dog = (Dog)ani;