DESKTOP-7J91214_20200828-张军强
1.总结
1.1抽象类与接口
相同点
-
两者都不能实例化
抽象类有构造但不允许实例化,只能让子类调用 ; 接口没有构造,所以接口不允许实例化
-
都可以包含抽象方法
-
都是由abstract修饰符修饰,但接口的abstract修饰符默认不显式书写
不同点
-
抽象类仍然是类,所以可以有字段、方法、构造方法;接口不是类,所以接口没有构造方法
-
抽象类可以有初始化器(类初始化器和实力初始化器) ; 接口不能有初始化器
-
抽象类子类只能继承一个直接父类 ;接口子类可以继承多个父接口
-
一个抽象类可实现多个接口 ;接口只能继承接口,不能实现接口
-
抽象类是类,类的最高层是Object ; 接口没有最高层,只能通过定义后继承
-
抽象类可以定义变量也可以定义常量 ; 接口只能定义常量:public static final修饰的常量
1.2 super 与 this
相同点
- this 和 super 都是与实例有关的 :使用 this 和 super 可以访问 实例成员 和 类成员(不建议访问)
- this 和 super 都不能出现在 static 方法中 和 static 代码块中 ( 类初始化器 )
- this 和 super 都可以用于调用构造方法:当通过 this( [参数] ) 或 super( [参数] ) 调用构造方法时,它们必须位于构造方法的第一行,在同一个构造方法内部 this 或 super不能同时出现
不同点
1.所表示的实例不同
- this 代表本类的当前实例,即可以通过this访问本类中的成员
- super 用于访问从父类中继承的、可见的成员
2.调用的构造方法不同
- this用于调用本类 内部的其他重载的构造方法
-
super用于调用 类中 的构造方法
3.访问的成员不同
- 可以使用this . 访问本类中以及从父类中继承的 ,可见的 成员
- 可以使用 super . 访问从父类中继承的 ,可见的成员
-
使用方式不同
- this 可以单独使用 ,而super不能单独使用
- this 在本类中使用时可以省略(当 this . name = name 时不能省略),super 则不可以省略
2.吐槽
午觉睡习惯了 ,前天中午没睡午觉 , 结果今天中午想睡就睡不着了。
点赞