关于Java的多态性
来源:才华咖 本文已影响7.07K人
来源:才华咖 本文已影响7.07K人
多态性有两种:
1)编译时多态性
对于多个同名方法,如果在编译时能够确定执行同名方法中的哪一个,则称为编译时多态性.
2)运行时多态性
如果在编译时不能确定,只能在运行时才能确定执行多个同名方法中的`哪一个,则称为运行时多态性.
方法覆盖表现出两种多态性,当对象获得本类实例时,为编译时多态性,否则为运行时多态性,例如:
XXXX x1 = new XXXX(参数列表); //对象获得本类实例,对象与其引用的实例类型一致
XXX xx1 = new XXX(参数列表);
ring(); //编译时多态性,执行XXX类的方法.
ring(); //编译时多态性,执行XXXX类覆盖的方法.
XXXX为XXX的父类.
由于子类对象既是父类对象,父类对象与子类对象之间具有赋值相容性,父类对象能够被赋值为子类对象.例如,
XXXX x2 = new XXX(参数列表); //父类对象获得子类实例,子类对象即是父类对象
ring(); //运行时多态
x2声明为父类对象却获得子类XXX的实例,那么ring()究竟执行父类方法还是执行子类覆盖的方法呢?
这分为两种情况:
取决于子类是否覆盖父类方法.如果子类覆盖父类方法,则执行子类方法;
如果没有覆盖,则执行父类方法.
在编译时,仅仅依据对象所属的类,系统无法确定到底应该执行那个类的方法,只有运行时才能确定,因此这是运行时多态.
父类对象并不能执行所有的子类方法,只能执行那些父类中声明子类覆盖的子类方法.
Java与Java web的区别大纲
sun认证java程序员须知Java日志框架
Java发展史之Java的由来
谈Java语言与Java技术的介绍
Java面试题Java写一个折半查找
Java动态代理实现AOP的方法
在Java中执行JavaScript代码
java与JavaScript语言有何不同
关于java的实习报告
Java认证基础知识:java字符串转化整型问题
PNPLA3、Sort1基因多态性与酒精性肝病易感性的关系
关于党建工作的重要性范文精选多篇
计算机二级JAVA考试构建JAVA程序2017
java与javascript之间json格式数据互转详解
Java与Java web有什么不同
Java与Java web的区别
JavaScript与java语言有何区别
JAVA认证基础知识:Java文件解压缩示例
Java基本语法—java标识符
Java零基础如何学好Java语言
Java入门教程:如何使用一个Java
java关于多线程的操作
Java认证辅导:Java实现二叉树遍历算法
Java Ajax jsonp跨域请求详解
JavaScript与java语言有何不同