Java 基础
2016-07-01 18:17
411 查看
/* 1多态的体现 父类的引用也可以接受自己的子类 2多态的前提 必须是类与类之间有联系,要么是继承要么是实现。 通常要覆盖 3多态的好处 很好的提高代码的扩展性 4多态的应用 5多态的弊端 提高了扩展性,但是只能使用父类的引用访问父类中的成员。 6.多态的 */ abstract class Animal { int num=9; abstract void eat(); } class Cat extends Animal { int num=112; public void eat() { System.out.println("eat fish"); } public void catchfish() { System.out.println("catch fish"); } } class Dog extends Animal { public void eat() { System.out.println("eat Bone"); } public void lookHome() { System.out.println("look home"); } } class Pig extends Animal { public void eat() { System.out.println("eat food"); } public void sleep() { System.out.println("can sleep"); } } class Duotaidemo { public static void main(String[] args) { //Cat c=new Cat(); //c.eat(); function(new Dog()); function(new Cat()); Animal a=new Cat(); a.eat(); /* 在多态中非静态成员函数的特点: 在编译时期:参阅引用型变量(a)所属的类中是否有调用的方法,如果有,则编译通过,否则失败 在运行时期:参阅对象所属的类中调用的方法(new Cat()) 简单总结:编译看左边,运行看右边。 注意:1.。在多态中成员变量的特点: 无论编译和运行,都参考左边(引用类型所属的类) 2.。在多态中static成员函数的特点: 无论编译和运行。都参考左边(引用类型所属的类) */ } public static void function(Animal a) { a.eat(); if(a instanceof Cat) { Cat c=(Cat)a; c.catchfish(); } else if(a instanceof Dog) { Dog d=(Dog)a; d.lookHome(); } else { Pig p=(Pig)a; p.sleep(); } } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树