继承和修饰符
01、继承介绍
-
问题 : 什么是继承 ?
让类与类之间产生关系, 子父类关系, 子类就可以直接使用父类中 ( 非私有的成员 )
-
问题 : 如何实现继承 ?
使用 extends 关键字 class Zi extends Fu {} Zi : 子类 (派生类) Fu : 父类 (基类, 超类)
-
问题 : 继承的出现, 给程序带来了怎样的好处 ?
1. 提高了代码的复用性 2. 提高了代码的维护性 3. 是多态的前提
02、继承的好处和弊端
-
问题 : 阐述继承的好处和弊端 ?
好处 : 1. 提高了代码的复用性 2. 提高了代码的维护性 3. 是多态的前提 弊端 : 类的耦合性增强了 开发的推荐原则 : 高内聚, 低耦合
-
问题 : 什么时候使用继承 ?
让发现多个类之间存在共性(相同)内容, 并且还产生了 is...a 的关系 就可以考虑使用继承来优化代码
03、继承中成员变量的访问特点
-
问题 : 当子父类中出现了重名的成员变量, 调用的时候, 优先使用谁的 ? 能区分吗 ? 怎么区分 ?
-
回答 : 会按照就近原则优先使用子类的成员变量, 如果想要区分的话 使用 super 关键字
04、super关键字
-
问题 : 什么是super关键字 ? 怎么用 ?
-
super : 调用父类相关成员 super.父类的成员变量; super.父类的成员方法(); super(); 父类的构造方法
05、继承中构造方法的访问特点
-
问题 : 子类初始化之前, 是否有必要完成父类的初始化 ?
-
有必要, 因为子类在初始化的过程中, 很有可能使用到父类的成员 如果父类没有提前完成初始化操作, 子类将无法使用父类的数据
-
问题 : 初始化一个对象, 用的是哪个方法 ?
-
构造方法
-
问题 : 子类是如何访问到父类构造方法 ?
-
在所有子类构造方法中, 第一行都默认隐藏了一句 super(); 在访问父类的空参数构造方法
-
线索 : 子类初始化之前, 只要有办法访问到父类的构造方法, 就能够完成父类的初始化 !!!
06、继承中成员方法的访问特点
-
问题 : 子父类中出现了重名的成员方法, 创建子类对象调用方法, 执行的是谁的逻辑 ?
-
执行子类的方法逻辑, 但这虽然是就近原则的现象 实际上是子类的方法, 对父类的方法进行了重写 !
07、方法重写
-
问题 : 什么是方法重载 (Overload)
-
在同一个类中, 方法名相同, 参数不同, 与返回值无关 参数不同: 1. 个数 2. 类型 3. 顺序
-
问题 : 什么是方法重写 (Override)
-
在继承关系中, 出现了方法声明一模一样的方法 (方法名, 参数, 返回值)
-
问题 : 子类什么时候需要重写父类的方法 ?
-
简单记 : 子类需要父类的方法, 又想对方法进行增强, 就可以重写
08、Java中继承的注意事项
-
问题 : Java是否允许多继承 ?
-
Java 只支持单继承, 不支持多继承, 但是可以多层继承
09、权限修饰符
-
问题 : 权限修饰符有哪些 ? 各自的权限是多大 ?
-
private : 在同一个类中 (default) : 在同一个类中, 同一个包中 protected : 在同一个类中, 同一个包中, 不同包的子类 public : 任意位置
10、final关键字
-
问题 : 什么是final关键字 ?
-
是一种修饰符, 可以修饰 (方法, 类, 变量)
-
问题 : 被 final关键字修饰后, 有什么特点 ?
-
方法 : 不能被重写 类 : 不能被继承 变量 : 只能赋值一次, 不可做修改
11、final修饰局部变量
-
问题 : final修饰基本数据类型变量, 引用数据类型变量, 有什么区别 ?
-
基本数据类型 : 数据值不可改变 引用数据类型 : 地址值不可改变 final修饰成员变量 : 赋值时机 1) 在定义的时候直接赋值 2) 在构造方法中完成赋值
12、static关键字
-
问题 : static 可以修饰哪些内容 ?
-
1. 成员变量 2. 成员方法
-
问题 : 被 static 修饰的成员有哪些特点 ?
-
1. 被该类的所有对象所共享 2. 多了一种调用方式, 可以通过类名.调用 3. 随着类的加载而加载, 优先于对象存在
-
问题 : 什么时候使用 static 修饰成员变量 ?
-
如果该数据, 需要被类的所有对象共享, 就可以加入 static 1. 同时在线人数 --> 所有的User对象, 都应该共享这份数据 2. 某学生管理系统, 只是针对于传智专修学院 --> 所有的Student对象, 内部的 school 属性就应该被共享
-
问题 : 什么时候使用 static 修饰成员方法 ?
-
思路 : 自己设计一个方法, 该方法的功能可以独立存在, 并且没有使用非静态的成员, 就可以设计为 static 主要的思想, 就是为了类名调用, 更加方便
-
工具类 :
-
如果一个类中, 所有的方法, 全部都是 static 静态的 通常会多做一部操作, 私有构造方法, 为了方式他人创建对象使用
13、static关键字访问特点
- 结论 : static方法中, 只能访问 static 的成员