网站首页 > java教程 正文
多态,就是多种状态的意思。在面向对象语言中,接口的多种不同的实现方式为多态,一个方法(名)多种实现,也是多态。多态可消除类型之间的耦合关系,拥有可替换性、 可扩充性、灵活性和简化代码的优点。
23.1 接口多态
在Java中,接口多态有三个必要条件:继承、重写和基类引用指向派生类对象(引用还是指向基类),接口多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。实现或改变父类方法的实现,在Java中叫作重写。
一个用于绘制图形的接口,提供一个绘制的方法,调用这个方法调,可以画圆,可以画方块,还可以画线条等。
public interface Shape {
void draw();
}
实现Shape绘制图形接口,实现画个圆。
//实现Shape接口,画个圆
public class Circle implements Shape {
public void draw() {
System.out.println("画个圆.");
}
}
实现Shape绘制图形接口,实现画个方块。
//实现Shape接口,画个方块
public class Square implements Shape {
public void draw() {
System.out.println("画个方.");
}
}
在调用的地方,面向的是接口Shape。如果想实现画圆,就用Circle,想实现画方块,就用Square。改变Circle和Square的实现细节,调用的地方,不需要改变,这就是松耦合的表现.
/*
* Java多态讲解
*/
public class Main {
public static void main(String[] args) {
Shape shape = new Circle();
//画个圆
shape.draw();
shape = new Square();
//画个方块
shape.draw();
}
}
输出结果
画个圆.
画个方.
23.2 方法多态
方法多态,在一个类里面,方法名字相同,而参数不同,返回类型可以相同也可以不同。专业名称叫作重载(overloading)。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。
/*
* Java多态讲解
*/
public class MathUtil {
public void add(int a, int b) {
System.out.println("两个整数之和为:" + (a + b));
}
public void add(double a, double b) {
System.out.println("两个浮点数之和:" + (a + b));
}
public void add(int a, double b) {
System.out.println("一个整数和一个浮点数之和:" + (a + b));
}
public static void main(String[] args) {
MathUtil math = new MathUtil();
math.add(10, 10);
math.add(10.25, 20.51);
math.add(10, 20.51);
}
}
输出结果
两个整数之和为:20
两个浮点数之和:30.76
一个整数和一个浮点数之和:30.51
发现没,一样是调用add方法,结果却是不一样的,这就是多态的优点。如果我提供这些教程,你却还不好好学的话,那不是多态,那叫变态。
好了,有关Java多态内容就这么多了,如果你觉得老陈这样讲还可以的话,你就转发和点赞,你的轻轻一点,就是对老陈继续创作的最大鼓励和支持。
一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,可关注今日头条:老陈说编程。我在分享Python,前端、Java和App方面的干货。关注我,没错的。
猜你喜欢
- 2024-09-27 Java多态重载和重写(类方法设计中多态与重载的区别是什么)
- 2024-09-27 什么是多态?Java为什么要用多态?(java中什么是多态性)
- 2024-09-27 别找了!月薪30k的T6大佬整理的Java多态知识点总结,限时收藏
- 2024-09-27 三十一、Java面向对象编程特性-多态
- 2024-09-27 Java多中包括态理解、多态实现、重写、转型和抽象类
- 2024-09-27 Java中的封装、继承和多态,你真的都懂了吗
- 2024-09-27 java基础之多态与向上转型,很用心的一篇笔记
- 2024-09-27 Java多态的介绍-学习日志(java的多态是什么)
- 2024-09-27 Java路径-25-Java多态(java路径错误)
- 2024-09-27 Java中的多态(基础语法)(java多态的定义和应用)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)