前言
前面学习了接口,今天学习了类和接口的关系
也要巩固前面所学的知识。
一、类和接口的关系
与类的关系
继承关系,只能单继承,但是可以多层继承
类与接口的关系
实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口
接口与接口的关系
继承关系,可以单继承,也可以多继承
接口中是可以定义 成员变量 但是必须用public 说static final 关键字修饰
二、抽象类和接口的区别
成员区别
抽象类
变量,常量;有构造方法;有抽象方法,也有非抽象方法
接口
常量;抽象方法
关系区别
类与类
继承,单继承
类与接口
实现,可以单实现,也可以多实现
接口与接口
继承,单继承,多继承
设计理念区别
抽象类
对类抽象,包括属性、行为
接口
对行为抽象,主要是行为
三、java中的四种权限修饰符
public protected (default) private
*同一个类中(我自己) yes yes yes yes
*同一个包中(我的邻居) yes yes yes yes
*同一个包中的子类(儿子) yes yes yes no
*不同子类 yes yes no no
*不同包的子类 yes no no no
四、接口和类
1、接口中是没有静态代码块和构造方法的
2、一个类的直接父类只有一个 但是一个类可以实现多个接口
3、如果实现类 所实现的多个接口中,存在重复的抽象方法, 那么只需要覆盖重写一次即可
4、如果实现类没有覆盖重写所以接口当中的所有抽象方法,那么实现类必须是一个抽象类
5、如果实现类所实现的多个接口中,存在重复的默认方法,那么实现类一定要对默认方法进行覆盖重写
五、代码练习
抽象人类
publicabstractclassPerson{
privateStringname;
privateintage;
publicPerson(){
}
publicPerson(Stringname,intage){
this.name=name;
this.age=age;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
publicabstractvoideat();
}