前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >浅析Java多态_JAVA多态

浅析Java多态_JAVA多态

作者头像
全栈程序员站长
发布2022-11-18 17:45:05
发布2022-11-18 17:45:05
67800
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

Java多态

今天来谈谈Java中的多态,作为面向对象的一大特性,它的重要性不必多说,相比其他两特性(继承、封装)从字面上看就有点不易读懂,多种态度还是有多变态?

官解

官方解释:

多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作。

简单理解就是同一方法在不同类中有不同实现(继承关系上),再或者就是父类的引用指向子类对象;

在这里我附上官方的图解:

如图所示:一台打印机,都有着打印的功能,但是不同的打印机在不同的场景或者不同的需求上,可以打印出不同的效果(如:彩 色、黑色)。

再者:就比如你有一张银行卡需要去柜台取钱,此时你可以将银行卡递交给你的朋友或者亲戚去帮你取,照样可以把钱取出来,因为在取钱的过程中,柜台负责人或者ATM机并不知道拿卡的就是你自己;这个过程就是体现多态的一个过程。

多态的优点

既然了解了什么是多态,那接下来就要了解多态是用来做什么的,换句话说就是多态的优点是什么:

  • 可复用性: 我们在写程序的时候,不必要为每一个子类都创建一个相同的方法或功能,我们只需要对抽象父类进行处理即可。
  • 提高扩展性和可维护性: 子类的功能可以被父类的方法或引用变量所调用。

存在的必要条件

  • 继承或实现
  • 重写
  • 父类引用指向子类对象:如:Parent p = new Child(); 以上三个必要条件需同时满足,当使用多态的方式去调用方法时,首先必须检查父类中是否有该方法,如果没有,则编译错误; 如果有,再去调用子类的同名方法。

格式:父类 变量名 = new 子类

​ 变量名.方法名()

代码语言:javascript
代码运行次数:0
运行
复制
public class Dad { 

void method() { 

System.out.println("我是父亲");
}
}
class Son extends Dad { 

@Override
//实现重写父类的method()方法
void method() { 

System.out.println("我是儿子");
}
void play(){ 

System.out.println("打篮球");
}
}
class Dau extends Dad { 

@Override
//实现重写父类的method()方法
void method() { 

System.out.println("我是女儿");
}
}
class test { 

//实现多态,父类的引用指向子类对象
public static void main(String[] args) { 

Dad dad = new Son();
//父类 子类
dad.method();
dad = new Dau();
dad.method();
}
}

输出结果:

我是儿子 我是女儿

引用数据类型的转型

引用数据类型的转型分为两种:向上转型和向下转型;

  • 向上转型是指把子类引用类型自动转换为父类引用类型,实现多态。
  • 向下转型是指把父类引用类型强制转换为子类引用类型,为调用子类特有的方法。

上述的代码就是向上转型,实现了多态;

代码语言:javascript
代码运行次数:0
运行
复制
class test { 

//向下转型,调用Son的方法
public static void main(String[] args) { 

Dad dad = new Son();
Son s = (Son) dad;
//子类 父类
s.play();
}
}

输出结果:

打篮球

如上代码就是向下转型,调用了子类特有的play方法。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/219157.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java多态
    • 官解
    • 多态的优点
    • 存在的必要条件
    • 引用数据类型的转型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档