多态典型例子
来源:互联网 发布:明解c语言pdf百度云 编辑:程序博客网 时间:2024/05/21 22:45
我们先来谈谈一个多态静态方法重写的例子:
package classfileStaticcover;class A{ public static void test() { System.out.println("be cover "); }}class B extends A{ public static void test() { System.out.println("cover"); }}public class StatiCover{ public static void main(String[] args) { A a_and_b = new B(); a_and_b.test(); }}
上面的代码输出的是父类test()方法里面的字符串。
再来看看一段代码,这段代码也是我今天看到了,觉得比较有用就拿来分析多态典型的例子:
package classfile;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"); } public String show(A obj) { return("B and A"); }}class C extends B{}class D extends B{}public class TypiucalTest{ public static void main(String[] args) { A a1 = new A(); A a2 = new B(); B b = new B(); C c = new C(); D d = new D(); System.out.println(a1.show(b)); System.out.println(a1.show(c)); System.out.println(a1.show(d)); System.out.println(a2.show(b)); System.out.println(a2.show(c)); System.out.println(a2.show(d)); System.out.println(b.show(b)); System.out.println(b.show(c)); System.out.println(b.show(d)); }}
输出结果如下面:
前面三个输出估计没有问题,接下来说明一下第四个,首先a2是A类的引用变量,它所指向的对象是B类的对象,可以看出这就是多态的特性,a2.show(b);计算机的执行过程为:首先到父类中寻找show(B obj)这个方法,但是发现找不到,于是找到形参为A定义的show(A obj)这个函数,把b赋值给a,在这一步上又有出现多态的特性,此时按理来说是输出的“A and A”,但是不然,因为show(A obj)这个函数被子类B重写了所以说要调用子类中的show(A obj)这个函数,以上三步是执行全过程,由此可以看出,多态特性中用父类变量调用成员方法是通过子类对象来调用的,所以最后一步调用了子类重写父类的成员方法。有些书上总结了一些公式,但我觉得这种问题还是要从解析内存上理解,后面的几个也差不多。
1 0
- 多态典型例子
- 多态典型例子
- 多态的典型例子
- 多态的典型例子(向上转型)
- GetMemory的典型例子
- 典型Makefile例子
- 一个典型的例子
- 典型的例子
- GetMemory的典型例子
- GetMemory的典型例子
- 多线程的典型例子
- GetMemory的典型例子
- Android.mk 典型例子
- 经济杠杆原理典型例子
- GetMemory的典型例子
- GetMemory的典型例子
- 存储过程的典型例子
- 一个黑洞的典型例子
- H5为视频播放器设置截图功能.
- Complete the Word-一道字符统计,解决很简单,优化有点难
- H5验证表单数据是否合法
- DataBinding与MVVM(含代码)
- 一个基本的H5页面
- 多态典型例子
- Android内存优化
- H5在输入框中显示提示信息
- rabitmqa和kafka
- DREAM: Distributed RDF Engine with Adaptive Query Planner and Minimal Communication-VLDB2015
- 分享技术哪家强(附demo对比)
- 《小王子》读后感
- Objective-C的继承与复合
- 可执行文件装载和进程 笔记