在面向对象这里,多态是一个重要的方法。它可以实现代码的简化。
定义:多态是同一个行为具有多个不同表现形式或形态的能力。
举个通俗的例子:手机有WiFi功能模块,它可以连接不同的WiFi。这就是多态,一句话就是“一个对多个”。
多态具有的优点有:
1. 消除类型之间的耦合关系(简单地说就是,没有多态,那么等号左边是啥右边就得是啥,这就叫耦合;而有了多态,左边是父类(或者接口),右边是子类(或实现类),只需调用接口里面的方法就行了。
2. 可替换性(就是一个类里边的用法是相同的,比如你吃鱼跟吃鸡的用法一样)
3. 可扩充性(增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。)
4. 接口性(多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。)
5. 灵活性(它在应用中体现了灵活多样的操作,提高了使用效率。)
6. 简化性(多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。)
拿一道题目来理解一下
刘备要吃鸡,吃鸭,吃鱼。
封装
封装
public class Person {//某人想吃东西
private String name;
public void eat(Food c) {
System.out.println(this.name + "吃" +c.getName());
}
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
上面建立的是一个父类,父类的任务是完成人吃东西这个项目,下面我们建立一个子类,子类的任务是人要吃的食物。
public abstract class Food {//想吃的东西,食物也可是抽象的。
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
想吃芦花鸡,建立一个多态,芦花鸡从食物中继承而来。
public class Cock extends Food{
public Cock() {
super.setName("芦花鸡");
}
}
想吃周黑鸭,只需要建立一个新的多态即可。
public class Duck extends Food{
public Duck() {
super.setName("周黑鸭");
}
}
想吃金龙鱼,同样的,建立一个多态,导出鱼类就好了
public class Fish extends Food {
public Fish() {
super.setName("金龙鱼");
}
}
好,现在我们已经给它做好了多态,接下来我们就只差它的输出了,就是谁来吃,吃什么的问题
public class duotai {
public static void main(String[] args) {
Person p = new Person("刘备");
Cock c = new Cock();
p.eat(c);
Duck d = new Duck();
p.eat(d);
Fish f = new Fish();
p.eat(f);
}
}
输出结果如下:

本文探讨了Java中的多态性概念,解释了多态如何简化代码并提高灵活性。通过一个刘备吃鸡、鸭、鱼的例子,展示了如何通过封装和多态实现类的继承与扩展,以及多态在实际问题中的应用。
465

被折叠的 条评论
为什么被折叠?



