美文网首页
面向对象 -多态注意点

面向对象 -多态注意点

作者: Eqo | 来源:发表于2022-07-14 22:52 被阅读0次

多态:指的是同一种事务(或者对象)的 在不同时刻表现出来的不同状态

多态的前提:

1.类与类之间存在继承关系
2.子类重写父类方法
3.父类引用指向子类对象

多态的体现

  • 父类引用指向子类对象
  • 子类对象赋值给父类引用
    父类名 引用名 = new 子类名()

多态成员的访问方式

成员变量

  • 编译看左边 运行看左边
    (先左边父类的属性,,如果没有就报错)
Animal an = new Cat();
System.out.println(an.name);

成员方法
编译看左边 运行看右边(编译方法看左边,运行方法要看右边的子类当中的方法)

  • 首先子类必须重写父类的同名方法
  • 如果子类当中没有这个方法,会执行父类的方法
  • 如果父类当中没有这个方法会报错

多态的好处

  • 提高程序的可拓展性 同一个方法 我们传入不同的对象 可以实现不同的功能
  • 因为 引用数据类型 不光可以接收本类型,也可以接收自己的子类对象(包含了子子孙孙无穷尽也!)对象
// 多态的应用 可拓展性,传入不同的对象 实现功能不同
    public static void main(String[] args) {
        Animal cat = new Cat();
        Animal dog = new Dog();

        show(cat);//小猫
        show(dog);//狗
        
    }
    public static void show (Animal an){

        System.out.println("-----调用方法");
        an.eat();
    }

父类
abstract class Animal {
    private String name = "动物";
    public abstract  void eat();
}
子类
public class Dog extends Animal{
    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }
}
public class Cat extends Animal {
    private String name ="小猫";
    @Override
    public void eat(){
        System.out.println("小猫爱吃鱼");
    }
}

多态的弊端

父类引用不能访问子类的特有功能. 怎样解决 通过向下转型 实现
问题 父类引用指向子类对象是向下转型, 如果我此时只想调用子类的特有方法 需要向下转型 (强转)

    public static void main(String[] args) {
        Animal cat = new Cat();
        Animal dog = new Dog();

      cat =  show(cat);//小猫
        show(dog);//狗
        //如果我想使用子类特有方法 向下转型 经常用 因为你一个
        Dog dog1 = (Dog) dog;
        dog1.call();
    }

相关文章

  • 面向对象 -多态注意点

    多态:指的是同一种事务(或者对象)的 在不同时刻表现出来的不同状态 多态的前提: 1.类与类之间存在继承关系2.子...

  • 面向对象三大特性(一):封装

    面向对象有三大特性:封装、继承和多态。注意,是面向对象的三大特性而不是Java的三大特性,Java只是面向对象语言...

  • C++ 多态性 运算符重载

    注意:本文中代码均使用 Qt 开发编译环境 面向对象的多态性可以分为四类:重载多态、强制多态、包含多态和参数多态,...

  • Java基础day08笔记:多态|多态中成员的特点|多态的应用示

    01-面向对象(多态-概念) 接下来说一下面向对象的第三个特征:多态。 何为多态呢? 其实...

  • Java知识要点整理(待补充)

    面向对象的特征封装:继承:多态:抽象: 简单阐述各个概念并举例,注意多态的2个种类和条件 String是基本的数据...

  • 宅男知识大补丸 学多态 认包包

    java零基础入门-面向对象篇(十) 多态 面向对象的三大特征,封装,继承我们讲完了,这次来讲多态。 多态就是指一...

  • OC面向对象—多态

    OC面向对象—多态 OC面向对象—多态 一、基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没...

  • Java学习day-07:面向对象

    一、面向过程和面向对象 1.面向对象与面向过程的区别: 面向对象具有三大特征;封装,继承,多态;面向对象与面向过程...

  • Kotlin入门学习(二)

    新的篇章 面向对象 面向对象-封装 面向对象-继承 面向对象-抽象类和多态 接口 委托和代理 by关键字 委托...

  • 对象和面向对象的介绍

    对象分为 面向对象和基于对象: 面向对象:面向对象定义: 可以创建自定义类型、很好的支持继承和多态。面向对象的语言...

网友评论

      本文标题:面向对象 -多态注意点

      本文链接:https://www.haomeiwen.com/subject/xumxirtx.html