Java笔记6:多态
2016-01-14 19:52
441 查看
一、多态的分类
对象的多态性:动物 x = new
猫();
函数的多态性:函数重载、重写
二、多态的体现
父类的引用指向了自己的子类对象
父类的引用也可以接收自己的对象
三、多态的前提
必须是类与类之间只有关系,要么继承或实现
通常还有一个前提,存在覆盖
四、多态的好处
多态的出现大大的提高了程序的扩展性
五、多态的弊端
只能使用父类的引用访问父类的成员
六、代码示例
运行结果:
一、多态的分类
对象的多态性:动物 x = new
猫();
函数的多态性:函数重载、重写
二、多态的体现
父类的引用指向了自己的子类对象
父类的引用也可以接收自己的对象
三、多态的前提
必须是类与类之间只有关系,要么继承或实现
通常还有一个前提,存在覆盖
四、多态的好处
多态的出现大大的提高了程序的扩展性
五、多态的弊端
只能使用父类的引用访问父类的成员
六、代码示例
abstract class Animal { abstract void eat(); } class Cat extends Animal { public void eat() { System.out.println("吃鱼"); } public void catchMouse() { System.out.println("抓老鼠"); } } class Dog extends Animal { public void eat() { System.out.println("吃骨头"); } public void kanJia() { System.out.println("看家"); } } class DuoTaiDemo { public static void main(String[] args) { function(new Cat()); function(new Dog()); Animal a = new Cat();//向上转型 a.eat(); Cat c = (Cat)a;//向下转型 c.catchMouse(); } public static void function(Animal a) { a.eat(); //用于子类型有限 //或判断所属类型进而使用其特有方法 if(a instanceof Cat) { Cat c = (Cat)a; c.catchMouse(); } else if(a instanceof Dog) { Dog c = (Dog)a; c.kanJia(); } } }
运行结果:
相关文章推荐
- Struts2标签取值方式
- Java虚拟机-对象的创建,对象头
- Java学习篇之---基本数据类型
- Spring 核心 Ioc(DI)
- JAVA泛型详解
- JAVA线程基础
- Java虚拟机-内存区域,堆,栈
- JAVA获得任务栏高度
- JAVA中的多线程
- javabean 简介
- Struts2 <s:token/>标签 防止表单多次提交
- struts2 中, iterator 标签 取不到action中变量的值
- Java单例模式以及线程安全性的保证
- spring mvc中,如何在 Java 代码里,获取 国际化 内容
- struts2 下载文件
- struts2 跳转至404 页面的解决方案
- Springmvc的框架流程
- struts2 通过下拉框来手动切换国际化
- struts2 拦截器Interceptor中取得request、response
- eclipse 使用adb命令