Java新手小白入门篇 Java面向对象(八)

Java新手小白入门篇 Java面向对象(知识点体系汇总)

  • 面向对象知识链接汇总,知识点体系(思维导图)

Java新手小白入门篇 Java面向对象(一)

  • Java面向对象(第一天)类,对象,方法的重载,练习题

Java新手小白入门篇 Java面向对象(二)

  • Java面向对象(第二天)构造方法,this关键字,内存结构初识,null,NullPointerException,引用类型数组(上),拓展,练习题

Java新手小白入门篇 Java面向对象(三)

  • Java面向对象(第三天)引用类型数组(下),继承,super,向上造型(上),拓展,练习题

Java新手小白入门篇 Java面向对象(四)

  • Java面向对象(第四天)向上造型(下),重写,访问控制修饰符,static关键字,拓展,练习题

Java新手小白入门篇 Java面向对象(五)

  • Java面向对象(第五天)final,static final,abstract关键字(抽象方法,抽象类)

Java新手小白入门篇 Java面向对象(六)

  • Java面向对象(第六天)成员内部类(不经常使用),匿名内部类(经常使用)

Java新手小白入门篇 Java面向对象(七)

  • Java面向对象(第五天)接口,拓展(类与接口的关系,抽象类与接口的区别),练习题

Java新手小白入门篇 Java面向对象(八)

  • Java面向对象(第八天)多态(对象的多态,行为的多态),拓展(面向对象)

Java新手小白入门篇 Java面向对象(九)

  • Java面向对象(第九天)简单的内存结构,面向对象三大特征

  • Java新手小白入门篇系列持续更新中…


一、多态

1. 对象的多态

1.1 向上造型
  • 向上造型,我们也可以理解为引用类型的自动类型转换(小转大)
    • 引用类型中父类为大,子类为小
    • Father f = new Son();
    • Father f = new Daughter();
  • 父类的引用指向子类的对象
     // 父类   引用类型变量(引用)    指向        子类的对象
      Father        f                =         new Son();
    
  • 能点出来什么看引用的类型
  • 能造型称为的类型
    • 超类
    • 接口
1.2 向下转型(向下造型)
  • 向下转型,我们可以理解为引用类型的强制类型转换(大转小)
    • Person p = new Student(); Student s = (Student)p;
    • 向下转型成功的条件
      • 引用所指向的对象就是该类型
      • 引用所指向的对象继承该类或者实现了该接口
    GrandPa g = new Son();
    // g(引用) 指向的类型为 Son 类型,所以可以强转为 Son 类型
    Son s = (Son)g; // 引用所指向的对象就是该类型
    // g(引用) 指向的类型为 Son 类型,所以可以强转为 Son 继承的 Father 类型
    Father f = (Father) g; // 引用所指向的对象继承和该类或者实现类该接口
    
    // 爷爷类
    public class GrandPa { }
    
    // 爸爸类
    public class Father extends GrandPa{ }
    
    // 儿子类
    public class Son extends Father{ }
    
  • 引用类型强转时,如果不符合上述的条件,会造成 ClassCastException 类型转换异常
  • 强转之前我们应该使用 instanceof 关键字进行判断,判断引用指向的对象是否属于改类型

何时需要强转:若想访问的变量、方法在超类中没有,则需要强转

2. 行为的多态

2.1 方法的重写
  • 重写是子类与父类的一种多态性的表现
  • 重写是一种运行时的多态。
  • 重写的前提是继承,向上造型之后,调用同一个方法,在运行时根据造型的类型不同调用各种类型重写之后的方法
2.2 方法的重载

重载是否是多态,网友们各执己见,这里我只是阐述下我对这个观点的说明,仅代表我自己

  • 重载是一个类多态性的表现
  • 重载是一种编译时的多态,根据传参时的类型不同或者数量不同来决定到底调用的那个重载的方法

二、拓展

1. 什么是面向对象

面向对象是以对象为核心来思考,解决问题的一种方式,它是 Java 核心的一种思想;
世间的万事万物我们都可以理解成一个对象,所以才有我们万物皆对象的说法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值