• Java学习笔记之多态


    多态概述

    1,多态是Java继封装,继承之后的第三大特性

    2,从字面意思来看可以理解为事物的多种形态,比如某某同学既可以是,又可以是学生,出现两种形态

    3,多态体现为父类对象引用子类实例

    1 //  定义格式:父类类型 变量名=new 子类类型();
    2     Person p = new Student();

    4,前提条件:必须有子父类关系

    多态使用时的特点

    1,多态成员属性:调用,执行向左看

    1 Person p=new Student();
    2 System.out.println(p.age);//p是Person中的值,只能取到父类的值

    2,多态成员方法:调用向左看,执行向右看

    1 Person p=new Student();
    2 System.out.println(p.eat());//p的门面类型是Person ,但实际类型是Student,所以调用的是重写后的方法。

    如何理解呢?p实际类型是Student类  但Person限制了p使用Student类独立Person类之外的属性和方法(这就是向左看,p只能调用Person及其父类的属性和方法)

                          如果子类中重写了父类的方法,执行的时候会调用重写后的方法(这就是向右看)

    多态的类型转换

    多态的转型分为向上转型和向下转型两种

    向上转型:多态本身就是向上转型过的过程

              使用格式:父类类型 变量名=new 子类类型();

              适用场景:当不需要面对子类类型时,通过提高扩展性,或者使用父类的功能就能完成相应的操作。

    向下转型:一个已经向上转型的子类对象可以使用强制类型转换的格式,将父类引用类型转为子类引用各类型(有限制

              使用格式:子类类型 变量名=(子类类型) 父类类型的变量

              适用场景:当要使用子类特有功能时。

    1 //假设Person是父类,Student继承Person,BigStudent继承Student
    2 Person p=new Student();
    3 
    4 //这是正确的,p能否下转为Student取决于p的实际类型
    5 Student s=(Student)p;
    6 
    7 //这是错误的,Student已经是p能下转的下限,但这个编译时不会报错,运行时才会
    8 BigStudent bs=BigStudent (p);

    小贴士:编译错误:编写代码时出现的红线和红×

                  运行错误:运行时控制台抛出的错误显示

    instanceof关键字

    用来判断某个对象是否属于某种数据类型。

    注意: 返回类型为布尔类型

    if(p instanceof Student){
        ((Student) p).study(); 
    }else if(p instanceof Teacher){
        ((Teacher) p).goClass();
    }
  • 相关阅读:
    [知乎]20世纪初的军阀.
    Clover的简单使用
    影像工作站的数据库安装错误之Win7系统下pg服务无法启动
    屏蔽各大视频网站播放前15秒30秒广告
    电脑双显示器主分屏,巨鲨显示器不亮
    move 和 CopyMemory的区别
    The CompilerVersion constant identifies the internal version number of the Delphi compiler.
    Firemonkey的旁门左道[六]
    电够动力足——认识主板上的CPU供电模块
    delphi 枚举类型
  • 原文地址:https://www.cnblogs.com/sunzhiqiang/p/11687026.html
Copyright © 2020-2023  润新知