Java中多态的粗浅见解
来源:互联网 发布:python字符串转数字 编辑:程序博客网 时间:2024/05/21 18:39
面向对象有三大特性:封装、继承、多态。
本文简单谈一下对多态的粗浅理解。实现多态的技术称为动态绑定,是指在执行期间,根据引用对象的实际类型,调用相应的方法。也是就说,多态是运行期的行为,不是编译期的行为。
多态存在的3个必要性:
1、要有继承;Child继承Parent类;
2、要有重写;Child类中存在与Parent类同名同参数的方法;
3、父类的引用指向子类对象: Parent p = new Child();
当使用多态调用方法时,程序首先会检查父类中有没有该方法,如果没有,就会报错,如果存在可调用的方法,程序会转入子类的该方法的重写方法。
多态中也会涉及到类型的类型转换。
1、向上类型转换:子类的类型转换为父类的类型,不需要指定,即不需要(Parent)。
2、向下类型转换:父类的类型转换为子类的类型,需要指定,即需要(Child)。
实例(java.HighCode.DuoTai)
package java.HighCode;class A {public String show(D obj){return ("A and D");}public String show(A obj){return ("A and A");}}class B extends A {public String show(B obj){return ("B and B");}/*重写了A类的show(A obj)*/public String show(A obj){return ("B and A");}}class C extends B {}class D extends B {}/** * * @ClassName: DuoTai * @Description: 演示多态特性 * @author * @date Mar 2, 2016 10:27:53 AM * */public class DuoTai {public static void main(String[] args) {B b = new B();C c = new C();D d = new D();A a1 = new A();System.out.println(a1.show(b));System.out.println(a1.show(c));System.out.println(a1.show(d));System.out.println("----------以下体现多态性-----------");A a2 = new B(); /*A的引用指向B类*//* a2调用show(b)时: * 1、程序会先检查A类中是否有对应的方法(能找到:show(A obj),因为B类(子类)可以隐式转换为A类), * 继续下一步; * 2、程序再到B类中找到对应的方法(能找到:show(A obj),即B类对A类的重写方法。) * */System.out.println(a2.show(b));System.out.println(a2.show(c));System.out.println(a2.show(d));System.out.println("----------以上体现多态性-----------");System.out.println(b.show(b));System.out.println(b.show(c));System.out.println(b.show(d));}}
0 0
- Java中多态的粗浅见解
- 对于heml和css的粗浅见解
- 对 java.nio.ByteBuffer 的粗浅理解
- java中抽象类的粗浅理解
- Java中接口的粗浅理解
- java中String的粗浅使用
- 粗浅的科普java异常机制
- synchronized java的见解
- JAVA接口的见解
- JAVA接口的见解
- java的见解!
- synchronized java的见解-)
- 对于java的个人见解
- java的入门学习见解
- 学习java的心态见解
- java线程的一些见解
- Java BIO, NIO, AIO的一些粗浅认识
- CDhtmlDialog的粗浅使用
- Content-disposition中Attachment和inline的区别
- SVN:Errors running builder 'DeploymentBuilder' on project---谷营中西软件科技园
- WEB安全之Token浅谈
- Android CM12.1 关机流程
- 让所有习惯黑暗的眼睛,都习惯光明。——顾城
- Java中多态的粗浅见解
- 使用adb命令查看apk包名信息
- git图解原理
- PEB进程环境块分析研究
- 在代码中将TextView的文字颜色改为自己写的color.xml文件设置的颜色
- 健康是美的基础
- android studio快捷键
- Android技术文章推荐
- C++文件读写详解(ofstream,ifstream,fstream)