A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 小石姐姐 于 2017-12-11 17:06 编辑

* 继承
        * 概念: 从已有类派生出新的类, 已有类称为父类, 派生类称为子类, 这种子类对父类的关系就是继承
        * 作用: 如果多个类中有共同的成员, 则可以将其抽取到同一个类中, 将这个类作为父类, 让其他类去继承, 继承后子类就具有了父类公开的成员
        * 关键字: extends
                * 定义位置: 子类类名后, 父类类名前
                * 格式: `public class 子类类名 extends 父类类名 {}`
        * Java语言中继承的特点
                * 支持单继承, 多层继承
                * 不支持多继承
                * 注意: Java中所有类都直接或间接的继承Object类
        * 继承关系下的成员
                * 成员变量
                        * 子类可以获取父类的非私有成员变量
                        * 就近原则:
                                * 如果有局部变量, 则使用局部变量
                                * 如果没有局部变量, 有本类成员变量, 则使用本类成员变量
                                * 如果没有局部变量, 也没有本类成员变量, 则使用父类成员变量
                                * 如果都没有, 报错
                * 成员方法
                        * 方法的重写: 在子父类继承关系中, 子类定义了和父类完全一样的方法(方法声明一样, 方法体无关), 子类就重写了父类的方法
                                * 注解: `@Override`
                        * 方法重写和重载的区别
                                * 定义位置不同
                                        * 重写: 子父类关系中
                                        * 重载: 同一个类中
                                * 方法定义不同
                                        * 重写: 方法声明必须完全一样, 和方法体无关
                                        * 重载: 方法名一样, 参数列表不同, 和返回值, 形参名称, 方法体无关
                        * 重写的特点:
                                * 子类如果重写了方法, 则调用子类重写的方法
                                * 子类如果没有重写父类方法, 则调用父类的方法
                        * 重写的应用场景
                                * 当父类方法无法满足子类需求时, 子类可以重写方法
                        * 注意事项
                                * 父类私有的方法不能重写
                                * 子类重写的方法权限必须大于等于父类方法的权限
                * 构造方法
                        * 子类构造方法中默认会调用父类的空参构造
                        * this和super
                                * this
                                        * `this(有参或无参)`: 可以调用本类其他构造方法
                                        * `this.成员`: 使用当前对象的引用调用成员
                                                * this在子类没有定义成员变量时, 会到父类中寻找父类的变量
                                * super
                                        * `super(有参或无参)`: 可以调用父类的构造方法
                                        * `super.成员`: 使用当前对象的父类引用调用父类的方法
                                * 特点:
                                        * 只能在构造方法的第一行出现
                                        * 两者只能调用其中一个
                                        * 子类构造方法中至少有一个会调用父类的构造方法
                        * 执行顺序
                                * 创建子类对象时, 会先调用父类的构造方法
                                       
* 匿名对象
        * 概念: 没有名字, 实际上是没有变量引用的对象
        * 匿名对象调用成员
                * `new 类名().成员变量`
                * `new 类名().成员方法()`
        * 使用场景: 适用于只需要使用对象一次的行为, 相当于一次性筷子
* final关键字
        * 概念: 是一个修饰符, 能够修饰类, 方法, 变量
        * 作用:
                * 修饰类: 不能被继承
                * 修饰方法: 不能被子类重写
                * 修饰变量: 该变量是自定义常量, 一旦初始化则无法改变其值
* 抽象类
        * 什么是抽象: 无法具体描述的, 但是能够表达出共性
        * 关键字: abstract, 能够修饰类, 方法
        * 作用:
                * 抽象类
                        * 使用abstract修饰的类
                        * 含有抽象方法的类必须定义为抽象了你
                * 抽象方法
                        * 没有方法体的方法: `修饰符 abstract 方法名();`
                        * 抽象方法必须被子类重写
        * 抽象类和类的关系
                * 抽象类也是类
                * 一个类继承了抽象类后只有2种选择:
                        * 重写父类的抽象方法
                        * 将该类本身修改为抽象类
        * 抽象类的特点:
                * 抽象类和抽象方法必须用abstract修饰
                * 抽象方法只能定义在抽象类中
                * 抽象类中并不一定需要抽象方法, 抽象类中也可以有非抽象的方法
                * 抽象类不能创建对象, 但是可以有构造方法(对成员进行初始化)
                * 抽象类和类之间也存在继承关系
                * 一个类继承了抽象类后只有2种选择:
                        * 重写父类的抽象方法
                        * 将该类本身修改为抽象类
        * 抽象类成员的特点:
                * 成员变量:
                        * 可以有成员变量
                        * 可以有常量
                * 成员方法:
                        * 可以有抽象方法
                        * 可以有非抽象的方法
                * 构造方法
                        * 可以有, 通过子类调用super()来实现抽象类成员的初始化
        * abstract不能与final和private一起用
                * final: 因为抽象方法必须被重写, 而final修饰的方法不能被重写, 有冲突
                * private: 因为抽象方法必须被重写, 而private方法子类看不见, 所有有冲突
        * 抽象思想的作用: 起到规范的作用

评分

参与人数 1黑马币 +1 收起 理由
lenwong + 1 淡定

查看全部评分

1 个回复

倒序浏览
棒棒的{:8_468:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马