@Fcy
类和接口
1.类和类的关系
类和类之间存在继承关系,且只能单继承。一个类只能继承一个父类。
存在继承关系的子类可以实现父类所有功能,也可以扩展子类自身功能和重写父类的功能。需要注意权限大小。子类的方法声明必须和父类一样。
权限大小:public>protected>default>private
2.接口和接口的关系
接口和接口之间也存在继承关系,而且可以多继承。一个接口可以同时继承多个接口。
Interface A extends B,C;
接口A就同时具备接口B和C的功能。
3.类和接口的关系
实现关系,而且可以多实现
class A implements B,C,D;
A类必须重写接口B,C,D的所有方法,否则为抽象的实现类。
class A extends B implements C,D;
A类此时具备父类和接口的所有功能。但是需要重写所有抽象方法。
4.接口和抽象类的区别
相同点:
都是用来设计抽象层的,是程序设计的结果。
都不能被实例化
不同点:
接口很灵活,可以和实现类多继承,一个实现类可以继承多个接口
抽象类只能单继承
接口没有抽象类强耦合
抽象类里可以有普通方法,接口里只有抽象方法(JDK1.8之后可以有默认和静态方法)
抽象类里可以有变量和常量,接口里只有常量
示例
public class Test3_Inter {
public static void main(String[] args) {
SportsMan run =new SportsMan();
run.run();
run.longrun();
run.shortrun();
run.No();
run.Hello();
}
}
interface Run{
void run();
}
interface LongRun{
void longrun();
}
interface ShortRun extends Run,LongRun{
void shortrun();
}
interface Norun{
void No();
}
abstract class Man implements Norun{
public void Hello() {
System.out.println("hello");
}
}
class SportsMan extends Man implements ShortRun,Norun{
@Override
public void run() {
System.out.println("跑步");
}
@Override
public void longrun() {
System.out.println("长跑");
}
@Override
public void shortrun() {
System.out.println("短跑");
}
@Override
public void No() {
System.out.println("不跑");
}
}
结果如下: