Java day06 多态 (类型提升,向下转型)
2016-03-18 23:44
525 查看
/* 多态 基于继承 多态: 父类的引用指向了子类的对象 作用: 提高了扩展性 局限性:仅能根据父类的引用访问父类的成员 */ //抽取出动物的吃的抽象方法, abstract class Animal { abstract void eat(); } //对不同动物的吃的行为的封装 class doSth { public static void function(Animal a) { a.eat(); //当类型少,或者必须确定某对象是什么类型时,用instanceof if(a instanceof Cat) {//对象属于某类的实例 Cat c=(Cat)a;//向下转型 c.catchMouse(); } else if(a instanceof Dog) { Dog d=(Dog)a;//向下转型 d.guard(); } } } class Cat extends Animal { public void eat() { System.out.println("I eat fish"); } public void catchMouse() { System.out.println("抓老鼠"); } } class Dog extends Animal { public void eat() { System.out.println("I eat bones"); } public void guard() { System.out.println("I'm guarding"); } } class PolymophismDemo { public static void main(String[] args) { Animal a=new Cat();//父类的引用指向了子类的对象注意, //实质是自动类型转换,右侧类型向左侧提升——向上提升 //注意!:仅当在此之后只进行二者共同方法调用才能这么用 //强制类型转换——向下转换 Cat c=(Cat)a;//此句前一定要有Animal a=new Cat(); c.catchMouse(); System.out.println(); // function(new Dog());// // function(new Cat());// doSth ds=new doSth(); ds.function(new Dog()); } }
相关文章推荐
- Java到底是值传递还是引用传递
- java 识别数组中是否具有重复元素
- JAVA对象的属性值自动维护
- Java day06 接口interface
- Java transient关键字使用小记
- SpringMVC Ajax请求返回404
- Java day06 模版方法设计模式 抽象类
- android(eclipse)新手常见问题总结(一)
- java 导出Excel
- java.sql.Exception:setString 只能处理少于 32766 个字符的字符串
- Java中String类(字符串操作)的10个常见问题和解决方法
- Java命名规范
- mac jdk原因导致 maven命令无法执行
- 【Android开发准备】Windows下JDK的安装与环境变量的配置
- JAVA面向对象之多态性
- 观察者模式学习以及jdk实现
- 关于java 异常捕捉 ( try catch finally ) 执行流程
- Java中Serializable接口和Cloneable接口
- 白话Spring(中级篇)---前端控制器
- java 类加载器