package duotai;
class A{
public String show(){
return "A";
}
} class B extends A{ public String show(){
return "B";
}
public String onlyB(){
return "onlyB";
} } class C extends B{
public String show(){
return "C";
} public String onlyC(){
return "onlyC";
}
} class D{ public String show(String item){
return "D+"+item;
} public int show(int item){
return item;
}
} public class Main { public static void main(String[] args) {
A a = new A();
B b = new B();
C c = new C();
A ab = new B();
A ac = new C();
B bc =new C();
/*
* B是A的子类,C是B的子类,A中有方法show(),B和C都对其进行了重写。
* 重写是父类与子类多态性的表现,子类的对象调用该方法将调用子类中的定义的此方法,父类中的此方法被屏蔽。
* 1,2,3分别为A,B,C的对象调用该方法,所以返回结果分别为A,B,C
*
*/
//1
System.out.println("1:a.show()="+a.show()); //输出:1:a.show()=A
//2
System.out.println("2:b.show()="+b.show()); //输出:2:a.show()=B
//3
System.out.println("3:c.show()="+c.show()); //输出:3:a.show()=C
/*
* 当超类通过声明的引用变量(称其为“对象的引用”其实更合适)调用其子类的对象时,它调用的方法必须是超类中拥有的子类的方法。
* 4中变量ab是由A声明的,引用了B的对象,所以ab.show()调用的是B类中的show()方法;但是如果使用ab变量调用onlyB()
* 是调不到的,因为超类中没有该方法。
* 5,6同4
*
*/
//4
System.out.println("4:ab.show()="+ab.show()); //输出:4:ab.show()=B
//5
System.out.println("5:ac.show()="+ac.show()); //输出:5:ac.show()=C
//6
System.out.println("6:bc.show()="+bc.show()); //输出:6:bc.show()=C /*
* 在D中有两个show方法,但它们的参数和返回值不同,这是方法的重载。
* 重载是一个类中多态性的一种表现,方法名相同,但参数的个数、类型,返回值至少有一个不同。
*
*/
D d =new D();
//7
System.out.println("7:d.show(itemStr)="+d.show("dd")); //7:d.show(itemStr)=D+dd
//8
System.out.println("8:d.show(itemInt)="+d.show(1)); //8:d.show(itemInt)=1
} }

版权声明:本文为博主原创文章,未经博主允许不得转载。

巩固java(五)----通过实例理解java多态的更多相关文章

  1. Java提高篇之理解java的三大特性——继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  2. 【转】java提高篇(二)-----理解java的三大特性之继承

    [转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...

  3. 【Java】「深入理解Java虚拟机」学习笔记(1) - Java语言发展趋势

    0.前言 从这篇随笔开始记录Java虚拟机的内容,以前只是对Java的应用,聚焦的是业务,了解的只是语言层面,现在想深入学习一下. 对JVM的学习肯定不是看一遍书就能掌握的,在今后的学习和实践中如果有 ...

  4. java提高篇之理解java的三大特性——多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  5. java提高篇(四)-----理解java的三大特性之多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  6. (转)java提高篇(四)-----理解java的三大特性之多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  7. 【转】java提高篇之理解java的三大特性——多态

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  8. 通过实例理解Java网络IO模型

    网络IO模型及分类 网络IO模型是一个经常被提到的问题,不同的书或者博客说法可能都不一样,所以没必要死抠字眼,关键在于理解. Socket连接 不管是什么模型,所使用的socket连接都是一样的. 以 ...

  9. Java 干货之深入理解Java泛型

    一般的类和方法,只能使用具体的类型,要么是基本类型,要么是自定义的类.如果要编写可以应用多中类型的代码,这种刻板的限制对代码得束缚会就会很大. ---<Thinking in Java> ...

随机推荐

  1. Linux - script练习

    首先HelloWorld 对谈式脚本:变量内容由使用者决定 随日期变化:利用date进行文件的创建 比较直接运行与利用source来运行脚本的区别

  2. ORACLE ERP各模块会计分录

      ORACLE ERP各模块会计分录   第一章 采购模块 一.资产采购(科目来源:库存组织) 1.物料接收 借  材料采购     接收数量*采购单价 贷 应计暂估     接收数量*采购单价 2 ...

  3. C++语言之类class

    在现实世界中,经常有属于同一类的对象.例如,你的自行车只是世界上很多自行车中的一辆.在面向对象软件中,也有很多共享相同特征的不同的对象:矩形.雇用记录.视频剪辑等.可以利用这些对象的相同特征为它们建立 ...

  4. 关于最新的APP上架流程

    苹果官方在2015年05-06月开发者中心进行了改版,网上的APP Store上架大部分都不一样了,自己研究总结一下,一个最新的上架教程以备后用 1.1.前期工作 首先你需要有一个苹果的开发者帐号,一 ...

  5. LeetCode(46)-Remove Nth Node From End of List

    题目: Given a linked list, remove the nth node from the end of list and return its head. For example, ...

  6. Python_linux环境变量和软链接(个人理解)

    --------------------------------------- 最近在服务器上想运行个脚本,装了个python3.6,但是他还自带了个2.7版本,后来发现上面还有3.5版本的pytho ...

  7. MySQL性能调优——索引详解与索引的优化

    --索引优化,可以说是数据库相关优化.理解尤其是查询优化中最常用的优化手段之一.所以,只有深入索引的实现原理.存储方式.不同索引间区别,才能设计或使用最优的索引,最大幅度的提升查询效率! 一.BTre ...

  8. 3sum(从数组中找出三个数的和为0)

    Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all un ...

  9. 模拟IC芯片设计开发的流程

    模拟IC芯片设计开发的流程 IC的设计,模拟和数字, 还有混合IC, 在设计方法, 注意点, 工具等有明显的区别, 我主要以模拟无线接收IC系统设计为例说明. 一个IC芯片的设计开发大致包括如下步骤. ...

  10. 实现CString的Format功能,支持跨平台

    #include <string>#include <stdio.h> #include <stdarg.h> std::string& std_strin ...