目录

chen 的个人博客

VX:ZzzChChen
Phone:13403656751
Email:zxydczzs@gmail.com

X

Java 多态

首先来看什么是多态

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

多态性是对象多种表现形式的体现。

多态的优点

  1. 消除类型之间的耦合关系;
  2. 可替换性;
  3. 可扩充性;
  4. 接口性;
  5. 灵活性;
  6. 简化性;

多态存在的三个必要条件

  1. 继承;
  2. 重写;
  3. 父类引用指向子类对象:Parent p = new Child();

 1package com.zxy.demo.Test;
 2
 3public class DuoTai {
 4    public static void main(String[] args) {
 5        Shape s1 = new Circle();
 6        Shape s2 = new Square();
 7        Shape s3 = new Triangle();
 8
 9        s1.draw();
10        s2.draw();
11        s3.draw();
12    }
13}
14
15class Shape{
16    void draw(){}
17}
18
19class Circle extends Shape{
20    @Override
21    void draw() {
22        System.out.println("Circle.draw()");
23    }
24}
25
26class Square extends Shape {
27    @Override
28    void draw() {
29        System.out.println("Square.draw()");
30    }
31}
32
33class Triangle extends Shape {
34    @Override
35    void draw() {
36        System.out.println("Triangle.draw()");
37    }
38}
39
当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。
多态的好处:可以使程序有良好的扩展,并可以对所有类的对象进行通用处理。
 1package com.zxy.demo.Test;
 2
 3public class DuoTai1 {
 4    public static void main(String[] args) {
 5        show(new Cat());
 6        show(new Dog());
 7
 8        Animal a = new Cat();
 9        a.eat();
10        Cat c = (Cat) a;
11        c.work();
12    }
13    public static void show(Animal a){
14        a.eat();
15        if(a instanceof Cat){
16            Cat c = (Cat) a;
17            c.work();
18        } else if(a instanceof Dog){
19            Dog c = (Dog) a;
20            c.work();
21        }
22    }
23}
24
25abstract class Animal {
26    abstract public void eat();
27}
28
29class Cat extends Animal {
30    @Override
31    public void eat() {
32        System.out.println("吃鱼");
33    }
34
35    public void work(){
36        System.out.println("抓老鼠");
37    }
38}
39
40class Dog extends Animal {
41
42    @Override
43    public void eat() {
44        System.out.println("吃骨头");
45    }
46    public void work(){
47        System.out.println("看家");
48    }
49}
50

多态的实现方式

重写;
接口:
  1. 生活中的接口最具代表性的就是插座,例如一个三接头的插头都能接在三孔插座中,因为这个是每个国家都有各自规定的接口规则,有可能到国外就不行,那是因为国外自己定义的接口类型。
  2. java 中的接口类似于生活中的接口,就是一些方法特征的集合,但没有方法的实现。
抽象类和抽象方法。

为什么要使用多态

  1. 可替换性: 多态对已存在代码具有可替换性。例如,多态对水果类工作,对苹果,橙子也同样工作。
  2. 可扩充性: 多态对代码具有可扩充性,可扩充功能。新加子类更容易获得多态功能。例如,在实现苹果的多态基础上,很容易增添水果类的多态性。
  3. 接口性: 多态是超类通过方法签名,向子类提供了一个共同接口 ,由子类来完善或者覆盖它而实现的。
  4. 灵活性: 它在应用中有着灵活的操作,提高了工作效率
  5. 简化性: 多态简化代码编写 和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。
(摘自菜鸟教程以及百度百科。)

标题:Java 多态
作者:zzzzchen
地址:https://www.dczzs.com/articles/2021/10/29/1635508115286.html