1继承
1.1是什么
Java中只支持单继承,一个类只能有一个父类
继承作用 : 提高代码的复用性,父类的功能,子类可以直接使用,使子类功能更加强大.
在java中 使用extends 关键字表示
-
语法 : public class 类名 extends 父类名{ 类体 }
目的 : 提高代码重用性
一个类如果没有显示继承另外一个类的话,那么该类默认继承 Object
-
java.lang.Object java中的祖类,是所有类的父类
-
也就意味着 Object中的属性 是所有类都有的
1.2能干什么
1.代码重用,子类可以直接使用父类的属性和方法
2.如果父类功能不能满足子类需求,还可以对父类方法
进行重写
3.使用多态
1.3怎么做
使用extends关键字 后边跟父类
Super
是什么
super : 官方给出的说法是 super保存了父类型特征,他可以在子类中访问父类的属性
可以干什么
语法 : super(参数);
1 用于成员/构造方法中区分子类和父类同名的成员属性
2 用于子类构造方法中,调用父类构造方法(必须出现在子类构造方法的第一行)
去调用父类的无参构造
注意: .1.如果 子类构造方法中 没有this(xxx) 也没有 super(xxx) 那么 默认会有一个 super();
2.this() 和 super() 都必须出现在构造方法第一行,所以它俩不能同时出现
.3.this和super 都不能在静态方法中使用
子类构造方法使用super(); 去调用父类的构造方法
1 创建对象
2 初始化父类属性
如果构造方法中没有显示this()和super() 则第一行 默认是 super() 调用父类无参
Super与this:
super() : 用来调用父类构造,初始化父类属性,并且创建对象(最终肯定会调用到Object,通过Object创建对象)
-
既然是创建对象的,那么只能在构造方法第一行,因为构造方法还有初始化成员属性的功能
-
成员属性想要初始化,必须有存储它的空间,而这个空间就在对象中, 所以要保证现有对象,再有数据初始化
- 所以先调用构造,进行初始化父类属性之后 创建对象,有了对象再执行实例化语句
-
所以 super()必须在第一行
-
this() : 重载调用当前类的其他构造方法
-
保证先有对象
怎么用
实例语句块和构造方法
- 实例语句块 : 可以等同看做成员方法,肯定需要使用对象调用的
- 但是由于没有名字,不能手动调用,只能自动调用
- 所以 只要创建完对象 就立刻执行
- 所以 实例语句块是在创建对象后执行,并且执行构造方法体之前
重写
子类继承父类之后,不需要和父类完全一
1 子类也有自己的特有属性
2 可以覆写父类的成员方法
覆写特指成员方法
应用场景
-
1 什么时候需要进行覆写
-
如果父类的方法已经无法满足子类的需求的时候,需要将父类中的方法进行重写
-
2 重写的条件
-
1 必须是有继承关系的体系中
-
2 方法名必须相同,返回值必须相同,参数列表必须相同
-
3 不能比原方法有更宽泛的异常
-
4 不能比原方法有更低的访问权限
-
5 覆写特指成员方法
-
3 继承最基本的作业 : 代码重用
-
4 继承最重要的功能 : 方法可以覆写,多态
-
重写的目的 :
-
1 满足当前需求 , 方法体编码
-
2 错误越来越少,不能有更宽泛的异常
-
3 使用范围越来越广,不能有更低的访问权限
-
4 功能越来越强
final
是什么
final : 是修饰符,表示最后的,最终的,不可更改的
能干什么
- 1 修饰的类 不能被继承
- 2 修饰的变量 就是常量,不能二次赋值(整个程序生命周期中不可更改),没有默认值
常量一般是public static final 的 - 3 修饰的成员方法不能被重写
- 深入理解:
final修饰的变量,内存空间中的值不可更改 -
如果修饰的是引用类型变量,也是一样的道理,但是和引用类型的地址指向的堆内存空间,没有关系
*/