Java的多态
2016-05-17 21:14
267 查看
多态,即对象的多种形态
1.引用多态
父类引用可以指向本类的对象
父类引用可以指向其子类的对象
2.方法多态
创建本类对象是,调用的方法为本类的方法
创建子类对象时,父类的引用指向子类对象,调用的方法为子类重写的方法,若没有重写则调用继承的方法
要点:Java的函数是会默认进行动态绑定,而C++必须将相应函数显示声明为虚函数
PS:所谓动态绑定是指当基类指针或引用指向派生类对象时,如果子类重写了调用的方法,则调用的是重写后的方法,若子类没有重写该方法,则调用的是从基类继承来的方法
注意:若子类在继承的基础上添加了父类中没有的方法(即使是以重载的方式实现也不行,因为父类中没有重载这个函数),此时是无法通过父类引用来实现调用的(因为父类压根没有这个方法)
参考代码:
父类Animal的内容:
View Code
1.引用多态
父类引用可以指向本类的对象
父类引用可以指向其子类的对象
2.方法多态
创建本类对象是,调用的方法为本类的方法
创建子类对象时,父类的引用指向子类对象,调用的方法为子类重写的方法,若没有重写则调用继承的方法
要点:Java的函数是会默认进行动态绑定,而C++必须将相应函数显示声明为虚函数
PS:所谓动态绑定是指当基类指针或引用指向派生类对象时,如果子类重写了调用的方法,则调用的是重写后的方法,若子类没有重写该方法,则调用的是从基类继承来的方法
注意:若子类在继承的基础上添加了父类中没有的方法(即使是以重载的方式实现也不行,因为父类中没有重载这个函数),此时是无法通过父类引用来实现调用的(因为父类压根没有这个方法)
参考代码:
父类Animal的内容:
package com.hao; public class Main { public static void main(String[] args) { // TODO 自动生成的方法存根 Animal A = new Animal("A", 10); Animal B = new Dog("B", 20); Animal C = new Cat("C", 30); //动态绑定,如果子类重写了调用的方法,则调用的是重写后的方法,若没有重写,则调用的是从父类继承来的方法的 A.information(); //指向本类对象,调用的父类的方法 B.information(); //指向子类对象,且Dog重写了该方法,调用重写后的方法 C.information(); //指向子类对象,但Cat类没有重写该方法,调用是Animal类中继承类的方法 } }
View Code
相关文章推荐
- [Javascrip] Logging Timing Data to the Console
- java类单继承,接口多继承设计的原因
- Java编译、反编译、JAR
- Java集合框架List,Map,Set等
- java反射详解
- 第十八章 springboot + thymeleaf
- Java单例模式
- 排序算法分析(一)-java实现
- Java图形界面开发—列出指定目录
- Java图形界面开发—列出指定目录
- REST、RESTFUL的理解以及SpringMVC实现Restful编程
- 并发编程学习总结(四) :java 显式锁ReentrantLock使用详解之lock()\unlock() 加锁与释放锁
- Dijkstra-java
- java之求两个输入数的最大公因数和最小公倍数
- java web 过滤器filter
- java实体类实现序列化的意义
- Eclipse报错:An internal error has occurred. Widget is disposed
- JAVA枚举使用详解
- Java 时间转换成unix时间戳
- java_singlton模式