Java中的多态,引用类型的转换
2017-03-09 11:42
316 查看
1.多态分为引用多态和方法多态,见测试类
2.引用类型的转换
(1)向上转型,小类型转换为大类型,它是隐式的,自动的,不存在隐患
(2)向下转型,大类型转换为小类型,它是强制转换,存在隐患,会参数内存溢出;可以使用instanceof运算符类避免安全性问题
package com.wangcf; //父类 public class Animal { public void eat(){ System.out.println("父类的方法"); } }
package com.wangcf; //子类 public class Bridge extends Animal{ public void eat(){ System.out.println("子类鸟重写的方法"); } public void fly(){ System.out.println("子类鸟独有的可以飞的方法父类中没有"); } }
package com.wangcf; //子类 public class Tiger extends Animal{ }
package com.wangcf; //测试类 public class Test { public static void main(String[] args) { //1.引用多态 Animal obj1=new Animal(); //父类的引用可以指向本类的对象 Animal obj2=new Bridge(); //父类的引用可以指向子类的对象 Animal obj3=new Tiger(); Tiger obj4=new Tiger(); //Bridg obj3=new Animal(); 子类引用不可以指向父类 //2.方法多态 优先使用子类的方法,若子类没有重写,则使用父类的方法;父类引用不可以调用子类独有的方法 obj1.eat(); //创建父类的本类对象,调用方法时,调用的是本类的方法 obj2.eat(); //若父类指向子类对象,调用方法为子类的重写方法 obj3.eat(); //或者继承方法 obj4.eat(); //若创建子类的本类对象,没有重写父类的方法,则会调用父类的方法 //obj2.fly(); 不能通过父类的引用调用子类独有的方法 } }
2.引用类型的转换
(1)向上转型,小类型转换为大类型,它是隐式的,自动的,不存在隐患
(2)向下转型,大类型转换为小类型,它是强制转换,存在隐患,会参数内存溢出;可以使用instanceof运算符类避免安全性问题
package com.wangcf; //测试类 public class Test { public static void main(String[] args) { Bridge bri=new Bridge(); Animal animal=bri;//向上转型 //Bridge bri2=animal;向下转型,错误需要使用强制转换 Bridge bri1=(Bridge)animal;//强制 //Tiger tig=(Tiger)animal;//虽然编译器没有报错,运行时会错,我们知道animal是Briger转换来的,它不能转换为Tiger //Tiger tiger=(Tiger)bri; //Cannot cast from Bridge to Tiger //使用 instanceof 进行判断 if(animal instanceof Tiger){ Tiger tig1=(Tiger)animal; }else{ System.out.println("无法进行类型转换"); } } }
相关文章推荐
- Java多态中的引用类型转换
- Java知识(多态和引用类型转换)
- Java多态中的引用类型转换理解模型
- Java多态之引用类型转换
- Java学习笔记二十六:Java多态中的引用类型转换
- java多态中的引用类型转换
- 【慕课笔记】U4 多态 第2节 多态中的引用类型转换
- Java基础12 类型转换与多态
- Java基础12 类型转换与多态
- 多态中的引用类型转换
- Java中引用类型变量的转换
- java之 多态-扩展性、多态子父类的类型转换、equals方法
- 多态引用类型转换
- Java继承和多态===Java多态对象的类型转换
- 详解Java多态对象的类型转换与动态绑定
- Java基础12 类型转换与多态
- java笔记之封装、继承、重写、多态以及类型转换
- 第一周第一天([用文档编辑Java并运行] [Java中数据类型的转换][标题的使用] [引用的使用] [代码块的使用] [图片的使用] [JDK] [Eclipse])
- Java多态对象的类型转换
- java :引用类型的转换  方法重载和重写  构造函数 修饰符