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中不允许类的多继承,但允许接口的多继承
    * 抽象类可以实现接口
    * 接口不能继承抽象类
    * 都是通过对象的多态性来实现的

  • 相关阅读:
    mysql 函数 存储过程 事件(event) job 模板
    protobuf 无proto 解码 decode 语言 java python
    mitmproxy fiddler 抓包 填坑
    android adb 常用命令
    android机器人 模拟 踩坑过程
    RabbitMQ添加新用户并支持远程访问
    Windows下RabbitMQ安装及配置
    Java mybatis mysql 常用数据类型对应关系
    easyExcel 踩坑
    linux防火墙查看状态firewall、iptable
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/5210950.html
Copyright © 2011-2022 走看看