zoukankan      html  css  js  c++  java
  • 继承

    1.继承

    * 子类=派生类
    * extends 维护子父类间的关系
    * java 一个类只能继承一个父类,这种方式叫做单继承。
    * java中如果你类没有出现extends关键字,默认继承object顶级超类、  根类
    * 子类可以继承父类的成员属性和成员方法,但是不包括构造方法
    * protected 修饰的属性在同包下可以访问
    * 为什么子类调用构造函数前必须调用父类的构造函数???【解答】因为子类继承了父类的成员变量,而子类中构造函数变量赋值会和父类构造函数的赋值产生代码重复,所以使用super()调用父类的构造函数。

    2.继承属性

    * 如果父类有某个属性,而子类刚好也一个一模一样的属性,子类访问时,访问的是子类的属性,如果子类没有这个属性,那么访问父类的属性, 这个特性叫:属性隐藏
    * 如果子类非得去获取父类的属性,可以通过super去获取,注意super 只能在类的内部使用
    * 子类继承父类的属性和方法,但是,无法继承父类private 修饰的方法或属性
    * 子类也继承了父类的静态属性

    3.继承方法

    * 子类可以继承父类的静态方法
    * 子类不能重写父类的静态方法

    4.继承+成员变量

    如果子类里没有包含和父类同名的成员变量,那么在子类实例方法中访问该成员时,则无需显式使用super或者父类名作为调用者,如果在某个方法中访问名为a的成员变量,但没有显式指定的调用者,系统查找顺序是:
    1. 查找该方法中是否有a的局部变量
    2. 查找当前类是否包含a的成员变量
    3. 查找a的直接父类是否有含有名为a的成员变量,依次上溯a的所有父类,直到Object类为止,如果都没有找到,报错。
    开发习惯:建议调用属性或方法显示指出调用者,处于运行效率的考虑

    5.继承+构造函数

    * 子类初始化(创建对象)时,首先调用父类的构造器,生成父类对象,然后在进行子类初始化
    * 子类new 对象的时候,必须调用父类构造函数
    * 如果父类无法提供子类所需要的构造函数
       * 这时会报错:父类自定义带参数的构造函数,而子类使用默认的构造函数(无参数的)
       * 最佳的解法:自定义类时,自定义一个空参数的构造函数(养成习惯)
    * 可以通过,super进行调用父类的构造函数,进行初始化父类属性
    * 构造函数不能被子类继承

    6.继承+接口

    * 一个子类可以同时继承抽象类和实现接口
    * 一个接口可以继承自另一个接口
    * java中不允许类的多继承,但允许接口的多继承
    * 抽象类可以实现接口
    * 接口不能继承抽象类
    * 都是通过对象的多态性来实现的

  • 相关阅读:
    工作流调度器azkaban
    日志采集框架Flume
    MAPREDUCE框架结构及核心运行机制
    Python爬虫开发系列之五》数据存储为TXT、JSON格式
    Python爬虫开发系列之二》请求库及解析库安装
    策略模式+简单工厂模式
    简单工厂模式
    单例模式
    5、计算高可用
    4、存储高可用
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/5210950.html
Copyright © 2011-2022 走看看