zoukankan      html  css  js  c++  java
  • 接口

    1.接口
    1.1 什么是接口
    interface
    接口是一种行为规范
    从语法上讲:接口是一种特殊的抽象类(初期理解)
    这种特殊的抽象类中
    所有的方法都是抽象的
    所有的变量都是常量
    从功能上讲:接口表示一种约定或者能力

    1.2 接口的特点(重点)
    1.类与类之间的关系 叫做 继承 extends
    类是单继承 一个儿子只能有一个爹
    类与接口之间的关系 叫做 实现 implements
    一个类 可以同时实现多个接口 接口与接口之间用逗号分隔 一个儿子可以有多个干爹
    2.类在继承一个类的同时 还可以实现多个接口
    弥补了java类之间单继承的不足 提高了代码的扩展性
    3.在java中 接口与接口之间也有关系 接口继承接口 一个接口可以同时继承多个接口
    4.接口不能用于实例化对象 接口中没有构造方法

    抽象类 和 接口的区别(重点)
    1.抽象类 使用abstract修饰 接口使用interface声明
    2.抽象类中可以包含非抽象的方法 也可以包含抽象方法
    接口中所有的方法都是抽象的
    3.抽象类 和 接口都不能被实例化
    抽象类中构造方法
    接口中没有构造方法

    2.多态
    2.1 什么是多态
    定义: 事物存在的多种体现形态

    2.2 多态的前提****(重点)
    1.类与类/接口之间存在着关系 要不就是继承 要不就是实现
    2.子类重写父类方法
    3.父类引用指向子类对象
    Animal a = new Dog();
    2.3 对象的向上转型 和 向下转型
    向上转型
    Animal a = new Dog();
    子类对象 赋值给 父类引用 会自动将子类对象的类型提升为父类类型
    语法:
    父类类型 引用名 = new 子类类型();
    特点:
    此时该引用 只能调用父类中的属性和方法
    不能调用子类特有的属性和方法
    向下转型
    将父类引用 强制 转为子类类型的过程
    语法:
    子类类型 引用名 = (子类类型)父类引用;
    特点:
    1.此时该引用可以调用子类特有的方法 同时还可以调用从父类继承过来的方法
    2.在进行向下转型之前 一定要用 instanceof运算符 进行判定
    否则容易出现"ClassCastException"类型强制转换异常
    语法:
    对象 instanceof 类型
    结果是 boolean类型
    true 对象属于指定类型
    false 对象不属于指定类型

    2.4 多态的应用以及注意事项(重点)
    在多态中
    父类引用指向子类对象时
    成员方法调用的特点:
    编译看左边 运行看右边
    在编译时期 参阅引用变量所属的类型中是否有调用的方法
    如果有 编译通过
    如果没有 编译不通过
    在运行时期 参阅对象所属的类中是否有调用的方法
    如果有 就调用
    如果没有 就调用父类的
    在堆内存中 在创建子类对象的同时 包含父类的内容 "你的是我的 我的还是我的"

    成员方法 动态绑定(根据对象的实际类型确定执行哪个方法)
    成员变量的特点:
    编译看左边 运行看左边
    成员变量 不具备多态性 通过引用变量来访问其包含的实例变量
    当父类 子类 出现重名变量的时候 多态状态下 看的是父类
    因为在创建子类对象时 堆内存中其实有两个变量
    一个是父类的num 一个是子类的num
    当你拿父类的引用 去找num的时候 他就找到他自己的

    成员变量(属性) 静态绑定(只根据当前表示类型决定使用哪个变量)
    不存在重写 父类中已经有属性了 就不再去找子类中的
    静态成员方法:
    编译看左边 运行看左边
    静态绑定(与类相关 与对象无关)
    2.5 多态的好处和弊端
    多态的好处:
    提高了程序的扩展性
    作用主要体现在 方法的形参列表上
    被继承的类 /被实现的接口 当做形参传递 可以接收任意子类(实现类)对象
    多态的弊端:
    虽然提高了程序的扩展性
    但是只能使用父类的引用访问父类中定义的成员
    不能直接访问子类特有的属性和方法 想要访问 必须向下转型

  • 相关阅读:
    灰哥的二叉树
    BZOJ1029: [JSOI2007]建筑抢修[模拟 贪心 优先队列]
    POJ1155TELE[树形背包]
    HDU4003Find Metal Mineral[树形DP 分组背包]
    POJ1837 Balance[分组背包]
    HDU2639Bone Collector II[01背包第k优值]
    POJ3666Making the Grade[DP 离散化 LIS相关]
    HDU2955 Robberies[01背包]
    HDU2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活[多重背包]
    POJ1014Dividing[多重背包可行性]
  • 原文地址:https://www.cnblogs.com/wanghuaying/p/9390966.html
Copyright © 2011-2022 走看看