• T4 S03 day 12


    **********************************************************************

    **********************************************************************


    由于数组的类型是父类Employer,只能访问父类的属性及方法
    那么如何访问子类独有的属性及方法?
    知道:当前元素他在赋值时的具体类型
    Employer[] aryEmp=new Employer[20];

    //向上类型转换,自动类型转换
    //向上类型转换,子类对象赋值给父类类型的变量
    aryEmp[0]=new PG();

    aryEmp[0].
    //使用instanceof 运算符
    语法 对象 instanceof 类名
    计算结果:true false
    if(aryEmp[0] instanceof PG){
    //向下类型转换,需要强制类型转换
    //父类类型的对象赋值给子类类型的变量
    PG pg=(PG)aryEmp[0];
    }
    运用技能点:
    1、封装 继承 多态

    封装:属性值的安全 合理
    继承:代码复用
    多态:同一父类类型,对同一方法,表现出不同行为
    当程序扩展时,代码改动最小

    扩展:多态的实现方式(有两种)
    1、方法重写 override 也称为方法覆盖
    动态方式实现多态:在调用过程中,子类的方法才去覆盖掉父类中的抽象方法
    在编译及new的过程中并没有覆盖
    2、方法重载 overload
    静态方式实现多态:在程序编译的过程中,重载的方法就都确定加载到内存中

    方法重载和方法重写的区别?
    1、位置不同
    重载的方法是在同一个类中
    重写的方法在子类中,被重写的方法在父类中
    2、重载:同名不同参 与返回值类型无关
    重写:要求方法头相同

    接口:
    类:使用is-a来描述子类、父类的关系 类单继承
    人类 父
    学生类 子 学生 is a 人
    子 父

    员工类 PG类 PG is a Employer

    PG 会打篮球 技能
    has - a 技能(接口) interface

    接口:
    1、方法:必须是抽象方法,必须是public
    2、属性:必须是public 必须是final的

    常量:值不能改变的量,声明赋值后,不能再通过代码改变其值。
    常量使用final来修饰
    final :最终的

    变量:值可以改变
    int i=1;
    i=2;

    一、使用final修饰的变量就是常量,其值在赋值后不能被改变
    【说明】
    1、属性级常量,在声明的同时需要赋值
    2、局部级常量,在声明后,可以单独赋值,但是赋值后,不能再次改变值
    3、常量在命名时所有字母都大写

    二、使用final修饰方法,称为最终方法,不能被子类重写

    三、final修饰类,称为最终类,不能被继承,没有子类
    String 就是使用final修饰的


    接口的使用场景
    1)接口让类去实现(继承)
    语法:类名 implements 接口名,接口名
    【说明】类实现接口后,就要实现(方法重写)接口中的所有方法

    implements 实现

    2)类在继承父类的同时,还可以实现多个接口
    包:com.qianfeng.oopstudy.interfaces
    语法 类名 extends 父类名 implements 接口名1,接口名2

    3)接口和接口之间可以继承 extends

    语法 接口 extends 接口1,接口2

    Java继承的特点:类单继承 接口多继承

    总结:
    什么时候编写类,什么时候编写接口

    符合 is - a 的关系时 编写类
    符合 has- a 的关系时 编写接口

    面试题: 抽象类和接口有什么区别?
    1、抽象类里可以有非抽象方法,接口中的方法必须是抽象的
    2、类是单继承的,接口是多继承的
    3、属性,抽象类中可以有常量也可以有普通属性 接口中的属性必须是public final

    相同点:
    抽象类和接口都不能被实例化
    抽象类有构造方法,接口没有构造方法
    抽象类中的构造方法用于给属性赋值
    练习:
    车类
    属性:品牌 颜色
    方法:启动 行驶

    子类:轿车类
    属性:排量
    方法:制冷

    滴滴接口:顺风车拉客运营功能

    创建两个轿车对象,调用方法


    增加卡车类
    Truck
    属性:载重量
    方法:拉货方法

    简单工厂设计模式

    方法:职能是创建对象

    设计模式:在软件开发中解决某种问题的编码方式
    简单工厂设计模式:创建对象时,对象的类频发发生变化

    一共23种:

    作业1:
    商品管理系统
    商品类:父
    编号 名称 单价

    子类:
    食品:保质期
    服装类:尺码


    技术:封装 继承 多态
    1、简单工厂设计模式

    菜单:商品的增删改查

    作业2:掷骰子游戏:
    描述:玩家 5000个金币
    电脑掷3个骰子 : 3--18
    玩家:压钱:50或50的倍数
    猜大小: 电脑 9个以下 小
    9个以上 大
    每次猜测结束后,输出结果

    首先:
    1、向上 向下类型转换
    2、instanceof
    3、接口的使用

  • 相关阅读:
    webpack和webpack-dev-server安装配置
    webpack和webpack-dev-server安装配置
    Json和Jsonp
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    读undo 导致db file sequential read
    direct path read 研究
    SpringCloud的版本
    521忘记送大家礼物了,补上!
  • 原文地址:https://www.cnblogs.com/wxcsz/p/10650991.html
Copyright © 2020-2023  润新知