JAVA多态的功能、简介及用法示例说明
下文笔者将讲述java多态的功能及多态的概念说明和用法,如下所示
Java多态的功能
1.提高代码的维护性(通过继承和实现来保证) 2.提高代码的扩展性(通过多态来保证) 3.降低代码耦合度
多态的概念说明
多态:
其字面意思指不同的形态
一个变量的同一行为可表现出不同的逻辑
如:
定义一个变量对象,他的play方法运行的逻辑表现出不同的形态
(有时候,运行父类的play方法
有时候,运行的是子类的play方法)
多态的实现条件:
继承和具体的实现关系
多态的定义格式
父类类型/接口类型 变量名 = new 子类/实现类();
多态的示例
public class Animal {
public String name = "animal";
@Override
public void eat(){
System.out.println("动物吃东西!");
}
}
public class Tiger extends Animal {
public String name = "tiger";
@Override
public void eat() {
System.out.println("虎吃鸡!");
}
public void run() {
System.out.println("虎奔跑!");
}
}
public class Snake extends Animal {
public String name = "snake";
@Override
public void eat() {
System.out.println("蛇吞象!");
}
public void run() {
System.out.println("蛇爬行!");
}
}
多态效果的展示
Animal tiger = new Tiger();
System.out.println("name = " + tiger.name);
// name 是Animal中的值,编译期只能取到父中的值
Animal snake = new Snake();
System.out.println(sanke.eat());
// snake 的门面类型是 Animal,
多态类型转换及instanceof关键字应用
多态的类型转换分为:
向上转型和向下转型
向上转型:
多态本身就是向上转型过的过程
如:
父类类型 变量名=new 子类类型();
当无需使用子类类型时,提高扩展性,我们可使用向上转换
Amimal tiger = new Tiger();
tiger.run(); //此时运行会,因为编译检查tiger是Animal类型,Animal中没有run方法。
//向下转型才能运行正确
((Snake)tiger).run(); // 此时编译检查能通过,但是运行时会报错,因为tiger实际类型是Tiger类型,
此时强制类型转换成Snake
编译时检测tiger是Animal类型
Snake也是Animal的子类,所以
编译时无法发现老虎不能转化为蛇类型。
// 此时 需使用 instanceof进行类型判断
if (tiger instanceof Tiger) {
((Tiger) tiger).run() // 此时经过instanceof判断后才能进行强制类型转换,编译和运行时均能通过。
}
从以上的代码上,我们可以得出instanceof用于类型判断
多态示例
public class Keeper {
public void feed(Animal animal){
animal.eat();
}
}
public class Test {
public static void main(String[] args) {
Keeper GodXiu = new Keeper();
Animal snake = new Snake();
Animal tiger = new Tiger();
GodXiu.feed(snake);
GodXiu.feed(tiger);
}
}
多态常见的示例
list list = new ArrayList(); Map map = new HashMap();
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


