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();
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。