Java面向对象程序设计多态性示例
作者:梦想成为大牛! 发布时间:2021-09-24 11:57:57
标签:Java,面向对象,多态性
本文实例讲述了Java面向对象程序设计多态性。分享给大家供大家参考,具体如下:
多态:具有表现多种形态的能力的特征(同一个实现接口,使用不同的实例而执行不同的操作)
实现多态的优点:为了方便统一调用!
实现多态的三种方式!
1. 子类到父类的转换:
例:
Dog dog=new Dog("欧欧","雪纳瑞");
dog.eat();
Pet pet=new Dog("欧欧","雪纳瑞");//子类到父类的转换
pet.eat();
pet.catchingFlyDisc();//编译错误,父类的引用无法调用子类的特殊方法
规则:
① 将一个父类的引用指向一个子类对象,称为向上转型,自动进行类型转换
② 此时通过父类引用变量调用的方法是子类覆盖或继承父类的方法,不是父类的方法.
③ 此时通过父类引用变量无法调用子类特有的方法!
2. 使用父类作为方法形参实现多态
public class Master
{
private String name = "";
private int money = 0;
public Master(String name, int money) {
this.name = name;
this.money = money;
}
public void feed(Pet pet) {
pet.eat();
}
public void feed(Dog dog) {
dog.eat();
}
public void feed(Penguin pen) {
pen.eat();
}
}
public class Test()
{
public static void main(String[] args) {
Master master = new Master("王先生", 100);
Pet pet = new Dog("欧欧", "雪纳瑞");
master.feed(pet);
}
}
3. 使用父类作为方法返回值实现多态
public class Master{
private String name = "";
private int money = 0;
public Pet getPet(int id)
{
Pet pet=null;
if(id==1)
{
pet=new Dog("欧欧","雪纳瑞")
}
else if(id==2)
{
pet=new Penguin("娜娜","帝企鹅");
}
return pet;
}
}
注意:
① 继承的存在(继承是多态的基础,没有继承就没有多态)
② 子类重写父类的方法
③ 父类引用变量指向子类对象
更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
来源:https://www.cnblogs.com/S2223/p/5531729.html


猜你喜欢
- 按官方修改的示例:#MidServerClient.javaimport feign.Param;import org.springfram
- 本文实例为大家分享了Java猜拳游戏的具体代码,供大家参考,具体内容如下先来看一下效果图: 首先我们创建一个Person类,这个类
- 记得当初自己刚开始学习Java的时候,对Java的IO流这一块特别不明白,所以写了这篇随笔希望能对刚开始学习Java的人有所帮助,也方便以后
- 一些Java项目中在mybatis与spring整合中有MapperScannerConfigurer的使用,该类通过反向代理自动生成基于接
- 一般在android显示一个View都是通过Activity的setContentView设置的,但是还有一种方法,可以直接使用Window
- 一、引言之前小编讲了MP从入门到核心功能的使用,接下来这几天小编会把MP在实际项目中,一些常用的高级功能给记录一下。高级功能分为:逻辑删除、
- Android Studio常用快捷键、Android Studio快捷键大全接下来这篇android studio使用教程,主要为大家介绍
- 这篇文章主要来讲讲c#中的泛型,因为泛型在c#中有很重要的位置,对于写出高可读性,高性能的代码有着关键的作用。一、什么是泛型?泛型是 2.0
- 在实际的应用中会经常需要将数据导出成excel,导出的方式除原样导出还有分页导出、分页分sheet导出和大数据量导出。对于excel2003
- 前言前面小空带大家了解了TextView的属性,实践了一些自定义粗细,阴影效果,链接形文字。但这还仅仅局限在用她本身的能力来实现的,那么她还
- 这里使用的是spring-security和原生的jasig cas包来进行整合,为什么没有直接使用spring提供的spring-secu
- 问题描述本来开发工具安装的是IDEA2018,有天用着用着突然崩溃了,重启后死活用不了。心血来潮下载了2019版本,顺利安装完,但是点击快捷
- 概述 ScrollView也是一个容器,它是FrameLayout的子类,它的主要作用就是将超出物理屏幕的内容显示
- 题目:Binary Tree Maximum Path SumGiven a binary tree, find the maximum p
- 目录1、Java 语言中创建一个对象使用的关键字是()2、创建一个标识有“关闭”标签的语句是 ( ) 。3、When is the text
- 代码很简单,功能也很简单,这里就不多废话了#include<stdio.h>int main(){ char ku[16]={&
- 首先给大家来讲一个我们遇到的一个奇怪的问题:1.我的一个springboot项目,用mvn install打包成jar,换一台有jdk的机器
- 前文传送门:Netty分布式高性能工具类同线程下回收对象解析异线程回收对象就是创建对象和回收对象不在同一条线程的情况下, 对象回收的逻辑我们
- 这篇文章主要介绍了Java自定义实现equals()方法过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 背景最近遇到个功能,两个月有300w+的数据,之后还在累加,因一开始该数据就全部存储在mysql表,现需要展示在页面,还需要关联另一张表的数