• JAVA的多态


    1. 引用多态

    父类的引用可以指向本类的对象

    Animal obj1 = new Animal();

    父类的引用可以指向子类的对象

    Animal obj2 = new Dog();

    2. 方法多态

    创建本类对象时,调用的方法为本类方法

    obj1.eat(); // 动物具有吃的能力

    创建子类对象时,调用的方法为子类重写的方法或者继承的方法

    obj2.eat(); // 狗具有吃的能力

    3. 应用类型转换

    3.1. 向上类型转换(隐式/自动类型转换),是小类型到大类型的转换

    Dog dog = new Dog();

    Animal animal = dog; // 自动类型提升 向上类型转换

    3.2. 向下类型转换(强制类型转换),是大类型到小类型

    Dog dog2 = (Dog)animal; // 向下类型转换 强制类型转换

    3.3. instanceof运算符,来解决引动对象的类型,避免类型转换的安全性问题

    if (animal instanceof Cat) {

        Cat cat = (Cat)animal;

    } else {

        System.out.println("无法进行类型转换");

    }

    4. 抽象类

    4.1. 语法定义

    使用abstract关键字修饰

    public abstract class *** {...}

    public abstract void ***() ;

    继承后的实现

    @Override

    public void ***() {...}

    4.2. 应用场景

    4.2.1. 在某些情况下,某个父类只是知道子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法。

    4.2.2. 从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性。

    4.3. 作用

    限制规定子类必须实现某些方法,但不关注实现细节

    4.4. 使用规则

    4.4.1. abstract定义抽象类

    4.4.2. abstract定义抽象方法,只有声明,不需要实现

    4.4.3. 包含抽象方法的类是抽象类

    4.4.4. 抽象类中可以包含普通的方法,也可以没有抽象方法

    4.4.5. 抽象类不能直接创建, 可以定义应用变量

    5. 接口

    5.1. 概念

    接口可以理解为一种特殊的类,由全局变量和公共的抽象方法所组成。

    类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供某些方法。

    5.2. 定义

    ininterface关键字定义接口

    [修饰符] [abstract] interface 接口名 [extends 父接口1, 父接口2...] { // 修饰符建议使用public // abstract关键字可隐式的表示,即可写可不写

        零个到多个常量定义

        [public static final] // 修饰符可隐式表示

        零个到多个抽象方法的定义

        [public abstract] // 修饰符可隐式表示

    }

    5.3. 使用接口

    一个类可以实现一个或多个接口,实现接口使用implements关键字。

    [修饰符] class 类名 extends 父类 implements 接口1, 接口2, ...{...}

    IPlayGame ip1 = new SmartPhone();

    ip1.playGame();

  • 相关阅读:
    空悬指针、野指针、内存泄漏、内存溢出
    自定义消息的操作方法ON_MESSAGE(..)
    为什么static成员变量一定要在类外初始化?
    Ubuntu 系统目录结构
    Beyond Compare 4 30天评估期结束的解决办法
    C++ string 字符串 结尾 标志
    C语言——枚举类型用法
    结构体struct-联合体union-枚举enum
    网卡bood
    kvm 安装
  • 原文地址:https://www.cnblogs.com/BlackList-Sakura/p/4323546.html
Copyright © 2020-2023  润新知