首先需要记住的是extends表示继承关系、implements表示实现关系
那么extends用于哪些情形、implements又用于哪些情形呢?
extends:
子类(class) extends 父类(class)===>继承类只能是单继承,也就是如果父亲属于类(class),那么父亲只能有一个
类(class)/ 接口(interface) extends 接口1(interface,接口2(interface)===>继承接口可以是多继承,也就是如果父亲是接口(interface)那么可以有多个父亲
ps1: 这里子类继承父类的前提是父类class不是final类
ps2:如果父类是抽象类,那么子类需要实现父类中的所有抽象方法,否则子类也将变成抽象类(实际上子类继承抽象父类的过程,也就是抽象父类的实例化的过程,因为抽象类不能直接被实例化,即不能通过new一个对象来产生,而是要借助于一个普通的类通过继承,实现所有该抽象类中的所有抽象方法来进行实例化;但是事实上也可以通过new来实例化抽象类,只是还需要借助于匿名内部类来实现)
public class Test4 {
public abstract static class animal{
public abstract void say();
}
public static void main(String[] args){
//直接通过new一个抽象类来实例化
//而这里相当于省略了创建子类继承进行实例化的步骤,也就是利用了匿名内部类实现实例化
animal animal = new animal(){
public void say(){
System.out.println("miaomiao");
}
};
animal.say();
}
}
ps3:继承类虽然不能多继承,即一个子类不能有多个父亲,但是可以多重继承,即class A extends B{} classB extends C{}
ps4:子类不能继承父类的private属性和方法
ps5:子类继承父类的方法时可以对父类的方法进行重写,这时候就需要注意重写的规则(参数个数、参数类型、返回类型和父类保持一致,同时子类重写方法的修饰符范围不能小于父类的修饰符)重写和重载
implements:
类(class) implements 接口1(interface),接口2(interface)==>一个类可以实现多个接口
ps1:实现一个接口需要实现接口中的所有方法