多态--Java

多态--Java

多态指的是同一个方法调用,由于对象不同可能会有不同的行为。编译器类型指的是‘=’左边的类型,运行时类型指的是‘=’右边的类型。当有继承关系时,可能发生编译器
和运行期类型不同的情况,即编译期类型是父类类型,运行期类型是子类类型。即:父类引用指向子类对象多态的要点:1、多态是方法的多态,不是属性的多态(多态与属性无关)。2、多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。3、父类引用指向子类对象后,用该父类对象引用调用子类重写的方法,此时多态出现了。使用父类做方法的形参,是多态使用最多的场合。即使增加了新的子类,方法也无需改动。
符合开闭原则。扩展:面向对象的设计原则之一:开闭原则OCP1、对扩展开放,对修改关闭。2、软件系统中的各种组件,如模块、类、功能等,应该在不修改现有代码的基础上,引入新功能3、面向对象设计需要遵守的最高原则,也是最终目标。
public class Progarmmer {public String name = "proname";//子类继承的public void writeCode(){System.out.println("writing code.......");}//子类重写的public void eat(){System.out.println("程序员吃饭......");}
}
public class Chinese extends Progarmmer{public String name = "ChinaName";//从父类继承一个方法 writeCode()//重写父类的一个方法eat()public void eat(){System.out.println("中国程序员吃饭");}//子类特有的方法public void playShadowBoxing(){System.out.println("中国人在打太极拳");}
}
public class English extends Progarmmer{//重写的方法public void eat(){System.out.println("英国人吃饭");}//特有的方法public void raceHose(){System.out.println("英国人在赛马");}
}
public class Italian extends Progarmmer{//重写eat方法public void eat(){System.out.println("意大利人在吃意大利面");}//特有的方法public void palyFootball(){System.out.println("意大利人在踢足球");}
}
public class Test {public static void showEat(Progarmmer pro){pro.eat();}public static void main(String[] args) {Progarmmer ch = new Chinese();showEat(ch);Progarmmer en = new English();showEat(en);Progarmmer it = new Italian();showEat(it);Progarmmer pro = new Progarmmer();showEat(pro);}
}

运行代码得:

public class Test2 {public static void main(String[] args) {Chinese ch = new Chinese();ch.writeCode();//从父类继承的ch.eat();//重写父类的ch.playShadowBoxing();//子类特有的Progarmmer ch2 = new Chinese();ch2.writeCode();//非多态ch2.eat();}
}

执行代码如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/562581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tex文件用什么软件打开_pdf怎么打开?用什么软件打开pdf?

时光荏苒,转眼2020年还有几个月就结束了,我们公司最近举办了"2020年工作季度总结"大会,领导要求每个部门的不同职员要写一份总结,讲述自己这段时间的经验和教训。而我作为办公室文秘,负责收集他们的个人总结…

Java一个小练习----String类型转换int类型

Java一个小练习 把字符串str分割程String数组,然后转换成int数组,排序 String str "123 345 89 93 2 6573 223" 然后在拼接成一个字符串如下: "2 89 93 123 223 345 6573" /*** String str "123 345 89 93 2…

高级语言的编译过程和解释过程_进来了解一下C语言真正的编译过程看你掌握了吗?...

C语言 前言说实话,很多人做了很久的C/C,也用了很多IDE,但是对于可执行程序的底层生成一片茫然,这无疑是一种悲哀,可以想象到大公司面试正好被问到这样的问题,有多悲催不言而喻,这里正由于换工作的缘故&…

final关键字---Java

final关键字---Java final关键字的作用1、修饰变量:被他修饰的变量不可改变。一旦赋了初值,就不能被重新赋值。2、修饰方法:该方法不可被子类重写,但是可以被重载。3、修饰类:修饰的类不能被继承。注意:1、…

以30字符宽居中输出python字符串_Python3 字符串

isdigit 和 isnumeric的区别?def dn():dgt[]num[]c0for c in range(2**16):chchr(c)if ch.isdigit():dgt.append(ch)if ch.isnumeric():num.append(ch)print(digits:,dgt)print(numeric:,num)dn()以上代码执行输出结果为:digits: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ,…

抽象类和抽象方法----java

抽象类和抽象方法----java 抽象方法:使用abstract修饰的方法,没有方法体,只能声明。定义的是一种“规范”,就是告诉子类必须要给抽象 方法提供具体的实现。抽象类:使用abstract修饰的类。通过abstract方法定义规范&am…

python序列类型包括字符串_python序列类型字符串列表元组

字符串序列:序号 列012345678索引序列类型,就是带有索引的数据类型:字符串/列表/元祖name wuhao dsb# 012345678name3 name[0]name2 name[6:]# 字符串/列表/元组共有方法# 长度print(len(name):,len(name))print(wo in name)print(w not in name)for i in name:print(i)#列表…

下载java离线文档的方法

第一种使用方法,直接下载 https://stackoverflow.com/questions/6986993/how-to-download-javadoc-to-read-offline 第二种方法,使用zeal软件 zeal简介:https://zealdocs.org/ 个人认为第二种方法好一点

接口-----java

接口就是规范,定义的是一组规则,体现了现实世界中“如果你是...则必须你能....”的思想。 如果你是天使,则必须能飞。如果你是汽车,则必须能跑。接口的本质就是契约,就像我们人间 的法律一样,大家都要遵守。…

如何利用flume进行日志采集

介绍 Apache Flume 是一个分布式、可靠、高可用的日志收集、聚合和传输系统。它常用于将大量日志数据从不同的源(如Web服务器、应用程序、传感器等)收集到中心化的存储或数据处理系统中。 基本概念 Agent(代理): …

python 概率分布类型检验_统计学:假设检验Python案例实现+概率论基础知识回顾...

先通过一个案例说明单样本检验的过程:案例分析:公司制造出10台引擎供测试使用,每一台的排放水平如下:15.6 16.2 22.5 20.5 16.4 19.4 16.6 17.9 12.7 13.9请判断公司生产的引擎是否符合政府规定呢?根据政府发布的新排放…

接口应用:内部比较器Comparable

接口应用:内部比较器Comparable public interface Comparable {public int compareTo(Object obj); }public class Book implements Comparable{private String bookName;private String author;private String publisher;private double price;Overridepublic int…

axios进行图片上传组件封装

文章目录 前言图片上传接口(axios通信)图片上传使用upload上传头像效果展示总结 前言 node项目使用 axios 库进行简单文件上传的模块封装。 图片上传接口(axios通信) 新建upload.js文件,定义一个函数,该函数接受一个上传路径和一…

python3多线程编程_Python 3多线程编程学习笔记-基础篇

本文是学习《Python核心编程》的学习笔记,介绍了Python中的全局解释器锁和常用的两个线程模块:thread, threading,并对比他们的优缺点和给出简单的列子。全局解释器锁(GIL)Python代码的执行都是有Python虚拟机进行控制的。当初设计Python的时…

JDK1.8的接口新特性

JDK1.8的接口新特性 JDK7及其之前1、接口的变量都是public final static 全局静态常量,无变化。2、接口中都是抽象abstract方法,不能有static方法(因为abstract和static、final、private不能共存)JDK1.8及其之后1、接口中可以添加…

多相机坐标转换_使用KITTI数据集实现坐标转换

本文的主要内容,是讨论如何将KITTI激光雷达的点云数据,映射到图像中去。KITTI数据集是怎么采集的下面这幅图是车的俯视图,可以看到,用到了2个彩色相机,2个灰度相机,1个激光雷达。1个GPS/IMU。图1 KITTI车俯…

内部类-----Java

内部类-----Java 内部类是一类特殊的类,指的是定义在一个类的内部的类,在Java中内部类主要分为非静态内部类、静态内部类、局部 内部类、匿名内部类。 非静态内部类,作为类的成员存在,和成员变量、构造方法、代码块并列。因为是…

静态内部类----Java

静态内部类----Java public class OutClass {//成员变量private static String name;private static int num 10;//构造方法public OutClass(){}public OutClass(String name, int num){this.name name;this.num num;}//成员方法public static void methodOut(){System.out…

api数据加密的定义_API 设计基础规范

首先,请务必记住 API 设计和使用的一个重要法则 Postels Law(又称作稳健性原则):Be liberal in what you accept, be conservative in what you send下面是关于 API 设计的一些基本问题API First将 API 视作产品,并向产品开发一样设计和维护 API在代码实…

匿名内部类----java

匿名内部类----java 匿名内部类就是内部类的简化写法,是一种特殊的局部内部类。 前提:存在一个类或者接口,这里的类可以是具体的类也可以是抽象类。 本质是:一个继承了该类或者实现该接口的子类匿名对象。 适合那种只需要创建…