一、继承
1.定义:
让类和类之间产生父子关系 ,子类可以很方便的使用父类的内容,解决类之间的代码重复问题。
2.语法格式:
class A{} ---------> 父类 超类 基类
class B extends A{}--> 子类
3.子类如何使用父类的内容:
在子类的本体中 直接使用父类的 非私有内容
在子类的对象, 可以使用父类和自身的 非私有内容
4.java中继承的特点:
- 1:java是单继承 一个子类只能有一个父类
- 2:java是多层继承
- 3: Object 是所有类的父类 ,一个没有继承关系的类 会默认继承 Object
- 4:java中的继承 是一种 "假继承" "伪继承"
注意:
子类初始化之前 先完成父类的初始化
子类使用的内容 其实是父类对象的使用
5.子类如何使用父类的内容:
在子类的本体中 直接使用父类的 非私有内容
在子类的对象, 可以使用父类和自身的 非私有内容
6.父类和子类的之间的区分
1:成员变量
父类和子类可以有相同的成员变量
super ---> 父类的内容
this ----> 子类的内容
2.成员方法
父子类之间,有完全一样的方法签名(重写方法)
super---->执行父类
this----->执行子类
3.重写和重载:(override 和 overload)
重写:在父子类中, 一模一样的方法
重载:在一个类中, 相同的方法名 不同的参数
4.this 和 super 的关系
this 当前的对象
super 父类的对象
this. super. 获得对应的内容
this() super() 获得对应的构造器 -->必须是代码的第一行
在所有的构造器中 你不写的话 会默认调用父类的无参数构造super()。
7.特殊的父类-->抽象类
理解:
对子类有限定的父类(要求子类必须实现特定的方法) 就是抽象类
//这就是抽象类 该类一定是父类 他的子类 必须是想对应的抽象方法
abstract class A{}
//这就是抽象方法 ,他写在抽象类中,只有方法的定义 没有方法的代码实现,子类自行实现
public abstract void 方法名();
示例:
public abstract class 类名{
public abstract void 方法名();
}
注意:
抽象类中 不一定有抽象方法
抽象方法所在的 不一定是抽象类(抽象方法里可以有抽象类和接口)
抽象方法是一个 不完整的方法 所在的抽象类也是不完整 必须要子类补充 (抽象类不能实例化)
抽象类中有构造器 自己不能使用 ,给子类赋值使用,如:super(...)。
8.接口:
概念:一系列规范的汇总
接口中的特点:
- 全部是抽象方法
- 全部的静态常量
- JDK8新增 接口中能有 完整的方法
- 接口和类之间是 实现关系(不是继承关系) 是多实现
语法格式:
interface 接口名{ ..... }
class a implement 接口 , 接口{}
9.接口和抽象类的区别
1.抽象类是用来捕捉子类的通用特性的,而接口则是抽象方法的集合
2.抽象类不能被实例化,只能被用作子类的超类,是被用来创建继承层级里子类的模板,而接口只是一种形式,接口自身不能做任何事情
3.抽象类可以有默认的方法实现,而接口完全是抽象方法
4.抽象方法可以构造器 ,而接口不能有构造器
5.接口方法默认修饰符是pulic,而抽象方法不能被实例化抽象类之外,和普通的Java类没有任何区别