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
投稿
猜你喜欢
- Idea中directory和package的区别,要是错了就右键,make directory as 目录或者源代码目录(Source R
- 一、java端首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下。webservice的接口代码:
- JNI,Java Native Interface,是 native code 的编程接口。JNI 使 Java 代码程序可以与 nativ
- 一、问题描述平时我们在完成某些数据的入库后,发布了一个事件,此时使用的是@EventListener,然后在这个事件中,又去对刚才入库的数据
- Stream简化元素计算一、接口设计从Java1.8开始提出了Stream流的概念,侧重对于源数据计算能力的封装,并且支持序列与并行两种操作
- this:this理解为:当前对象 或 当前正在创建的对象可以调用的结构:属性、方法;构造器this调用属性、方法:先了解一下形参:形参的意
- 本文实例讲述了Java面向对象程序设计:类的定义,静态变量,成员变量,构造函数,封装与私有,this概念与用法。分享给大家供大家参考,具体如
- 本文以实例形式简单讲述了引用类型转换的几种常见方式,如:子类转换成父类,父类转换成子类,以及不是子父级关系类之间的转换。现分述如下,供大家参
- 前言:封装、继承和多态是面向对象编程的三大特征。1.封装1.1.封装概念封装就是把抽象出的数据(属性)和对数据的操作(方法)封装在一起,数据
- 这里主要是总结一下如何监听有未接来电的问题 1.1 使用广播 * BrocastReceiver实现思路 : 静态注册监听and
- Selenium.WebDriverSelenium WebDriver 是一组开源 API,用于自动测试 Web 应用程序,利用它可以通过
- 本文实例为大家分享了Android实现登录注册功能的具体代码,供大家参考,具体内容如下运行环境 Android Studio总体效果图一、
- MyBatis查询返回null可能原因SQL语句查询条件有问题数据库中没数据返回字段与Entity的属性不对应解决方案针对 SQL
- 背景很多时候我们使用WPF开发界面的时候经常会用到各种空间,很多时候我们需要去自定义控件的样式来替换默认的样式,今天通过两个方法来替换WPF
- 一,引入dll1.ServiceStack.Common.dll2.ServiceStack.Interfaces.dll3.Service
- Android ListView填充数据的方法因为多人开发,为了是自己开发的模块方便融合到主框架中,同时也为了减小apk的大小,要求尽可能少
- 1、添加maven依赖<dependency>  
- 前言天空盒这个效果最早是在腾讯的实景地图里看到的,当时觉得很牛逼,但是没有想过自己去实现以下。最近这段时间对opengl很有兴趣,顺便就搞了
- 监控给定的域名,一旦域名连续30秒(这是默认值,可以在源码中修改)无法Ping通,立刻发邮件到指定邮箱,并发短信给站长 原理: 用后台线程循
- 需求:键盘录入一个月份,输出该月份对应的季节。一年有四季3,4,5 春季6,7,8 夏季9,