Java中的多态用法实例分析
作者:司青 发布时间:2021-07-11 18:36:35
标签:Java,多态
本文实例讲述了Java中的多态用法。分享给大家供大家参考。具体分析如下:
多态,是面向对象的程序设计语言最核心的特征。封装性、继承性都比较简单,所以这里只对多态做一个小小的笔记。。。
1、什么是多态?
多态意味着一个对象可以多重特征,可以在特定的情况下,表现出不同的状态,从而应对不同的属性和方法。在Java中,多态的实现指的是使用同一个实现接口,以实现不同的对象实例。
例如,我们定义一个Parent类,再定义一个getName()方法返回一个字符串,定义一个形参为Parent类型的成员方法doSomething(Parent obj),在这个方法中调用obj.getName()。然后再定义两个类A和B,都从Parent类继承而来,在子类中重写getName()方法。最后在main方法中创建一个Parent类的对象objP,调用objP.doSomething()方法并向其传递class A,和class B 的引用。观察输出结果。
class Parent
{
private String name = "parent";
public String getName()
{
return this.name;
}
public void doSomething(Parent obj)
{
//输出类名
System.out.println(obj.getName());
}
public static void main(String[] args)
{
Parent objP = new Parent();
objP.doSomething(new A());
// 传递A的引用,则调用的是A类的getName方法
objP.doSomething(new B());
// 传递B的引用,则调用的是B类的getName方法
}
}
class A extends Parent
{
private String name = "class A";
//@重写getName()方法
public String getName()
{
return this.name;
}
}
class B extends Parent
{
private String name = "class B";
//@重写getName()方法
public String getName()
{
return this.name;
}
}
可见,父类的doSomething方法多态地调用了我们传递的对象的getName方法,而不是Parent类本身的getName方法。
2、Java中的接口
Java中的接口,是一系列方法的声明。一个接口只有方法的特征,而没有方法的实现。这些方法可以从别处通过特定的类来实现。在Java中,用关键字interface来声明一个接口。
用接口实现多态的实例:
interface Name
{
//只声明,不实现
public String getName();
}
class A implements Name
{
private String name = "class A";
//实现getName方法
public String getName()
{
return name;
}
}
class B implements Name
{
private String name = "class B";
//实现getName方法
public String getName()
{
return name;
}
public static void main(String[] args)
{
Name obj = new A();
System.out.println(obj.getName());
}
}
可以看到,打印出了类A的名字class A。
PS:一个类如果没有实现接口中的所有方法,那么这个类必须被声明为abstract(抽象的)。一个abstract类是不允许实例化对象的。
希望本文所述对大家的java程序设计有所帮助。
0
投稿
猜你喜欢
- null与voidnull值用来表示数据类型未被赋予任何值,它是一种引用类型;void表示没有类型,或者说是没有任何值。null与void的
- springboot 多个filter的执行顺序以及配置当项目中有多个filter时,为了便于管理,可以创建一个配置文件,对所有的filte
- 在Android中,线程内部或者线程之间进行信息交互时经常会使用消息,这些基础的东西如果我们熟悉其内部的原理,将会使我们容易、更好地架构系统
- 1.以G71列车为例,首先对车次站台进行占位编码(从1开始到最后一站递加)对以上占位简单描述以下:G71总共18个站点那么我们的单个座位的座
- 本文主要带大家看看Object类中一些常用方法的API文档的介绍和JDK中的源码。1.equals方法1.API中equals方法的介绍2.
- Java中如何输出像1-2-3-4-5 这样的字符抱歉对于这个问题我甚至不能想到一个合适的标题,但是不重要 以下操作基于 jdk 1.8St
- Gson是一个Java库,用来实现Json和Java对象之间的相互转换。Gson是一个托管在https://github.com/googl
- 本文介绍了Spring Boot + MyBatis读写分离,有需要了解Spring+MyBatis读写分离的朋友可参考。希望此文章对各位有
- 1:Xxtea支持中文;2:支持JS和C#加解密之间的互转;一:C#部分class XXTEA2 {
- 一、先来分别介绍一下ArrayList,Hashtable,List<T>,Dictionary<K,V>1.Arr
- mybatis foreach嵌套if标签代码实现:Mapper.java文件List<Map<String, Object&g
- 一、目的本篇文章的目的是记录本人使用flutter加载与调用第三方aar包。二、背景本人go后端,业余时间喜欢玩玩flutter。一直有一个
- 前言项目使用redis作为缓存数据,但面临着问题,比如,项目A,项目B都用到redis,而且用的redis都是一套集群,这样会带来一些问题。
- 1.Spring中的 * 在web开发中, * 是经常用到的功能。它可以帮我们预先设置数据以及统计方法的执行效率等等。今天就来详细的谈一下s
- 异常与错误:异常:在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知
- cookie和session的区别和联系cookie是本地客户端用来存储少量数据信息的,保存在客户端,用户能够很容易的获取,安全性不高,存储
- 1.场景线程池使用DiscardOldestPolicy拒绝策略,阻塞队列使用ArrayBlockingQueue,发现在某些情形下对于得到
- 本文实例为大家分享了Android微信摇一摇功能的实现方法,供大家参考,具体内容如下import java.util.ArrayList;
- 本文实例为大家分享了java实现仿射密码加密解密的具体代码,供大家参考,具体内容如下加密:将明文转化为对应的数字,如 ‘a'->
- 1. 前言Spring提供了xml、注解、JavaConfig多种方式来配置bean,不论何种方式,Spring最终都会将bean封装成Be