前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA知识基础(十):多态

JAVA知识基础(十):多态

作者头像
栗筝i
发布2022-12-01 08:41:27
2060
发布2022-12-01 08:41:27
举报
文章被收录于专栏:迁移内容

1.概述

1.1多态的定义 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作。 多态性是对象多种表现形式的体现。 1.2多态的优点

  1. 消除类型之间的耦合关系
  2. 可替换性
  3. 可扩充性
  4. 接口性
  5. 灵活性
  6. 简化性 1.3多态存在的三个必要条件 继承 重写 父类引用指向子类对象

2.多态的实现方式

方式一:重写: 这个内容已经在上一章节详细讲过,就不再阐述,详细可访问:Java 重写(Override)与重载(Overload)。 方式二:接口

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

方式三:抽象类和抽象方法 https://blog.csdn.net/weixin_45187434/article/details/106320376

3.向上转型&向下转型

向上转型:多态本身是子类类型向父类类型向上转换的过程,其中,这个过程是默认的。你可以把这个过程理解为基本类型的小类型转大类型自动转换,不需要强制转换。 当父类引用指向一个子类对象时,便是向上转型。 向上转型格式:

父类类型 变量名 = new 子类类型(); 如:Father f= new Son();

向下转型:父类类型向子类类型向下转换的过程,这个过程是强制的。同样可以把这个过程理解为基本类型的自动转换,大类型转小类型需要强制转换。一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制类型转换的格式,向下转使用格式:

Father father = new Son(); 子类类型 变量名 = (子类类型) 父类变量名; 如:Son s =(Son) father;

4.例题

代码语言:javascript
复制
package Polymorphic;
//爷爷类
class Ye {
    public String show(Sun obj) {
        return ("Ye and Sun");
    }

    public String show(Ye obj) {
        return ("Ye and Ye");
    }
 }
代码语言:javascript
复制
//爸爸类
class Fu extends Ye {
    public String show(Fu obj) {
        return ("Fu and Fu");
    }

    public String show(Ye obj) {
        return ("Fu and Ye");
    }
}
代码语言:javascript
复制
//儿子类
class Zi extends Fu {

}
代码语言:javascript
复制
//孙子类
class Sun extends Fu {

}
代码语言:javascript
复制
public class PolymorphicTest {
    public static void main(String[] args) {
         Ye y = new Ye();
        Ye y2 = new Fu(); //向上
        Fu f = new Fu();
        Zi z = new Zi();
        Sun s = new Sun();


        System.out.println("第一题 " + y.show(f));
        System.out.println("第二题 " + y.show(z));
        System.out.println("第三题 " + y.show(s));
        System.out.println("第四题 " + y2.show(f)); 
        System.out.println("第五题 " + y2.show(z));
        System.out.println("第六题 " + y2.show(s));
        System.out.println("第七题 " + f.show(f));
        System.out.println("第八题 " + f.show(z));
        System.out.println("第九题 " + f.show(s));
     
    }
}

4.例题答案

第一题 Ye and Ye 第二题 Ye and Ye 第三题 Ye and Sun 第四题 Fu and Ye 第五题 Fu and Ye 第六题 Ye and Sun 第七题 Fu and Fu 第八题 Fu and Fu 第九题 Ye and Sun

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.概述
  • 2.多态的实现方式
  • 3.向上转型&向下转型
  • 4.例题
  • 4.例题答案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档