Java基础-抽象类和接口的区别

abstract

当子类中有一些共有的但是细节不同的行为的时候,可以对这些行为进行抽取,将这些行为抽取到父类中以抽象方法的形式展现。---抽象方法所在的类一定是抽象类

抽象类不能实例化(创建对象),但是有构造方法

抽象类中可以有抽象方法也可以没有抽象方法

抽象方法可以重载

抽象方法不可以用static/final修饰

抽象方法不可以用private修饰

抽象方法可以用默认权限修饰吗?---可以---父子类必须同包

当子类继承了抽象类之后要求必须实现对应的抽象方法

接口

用interface定义接口,用implements关键字让类和接口之间产生联系,这种联系称之为实现。

接口不能用于实例化,也没有构造函数---接口不是类

单继承,多实现---一个类只能有一个父类,但是可以实现多个接口---多实现必不可免的会导致方法的混乱

interface A{

void m();

}

public class B implements A{

void m(){ // 接口中的方法默认是public修饰---重写 一大 原则

System.out.println(“B m()”);

}

}

接口中的方法默认是抽象方法,默认用public(只能用)修饰,接口中的数据默认是静态常量---默认用public static final修饰

接口可以继承接口---接口之间是多继承

抽象类在实现接口之后一定要实现这个接口中的所有的抽象方法吗?---不一定

接口可以在一定程度上统一结构实现方法的统一调用,但是可能会导致代码的冗余

接口中不能定义构造函数,虽然接口编译完成后也会产生一个class文件,但接口本质上不是类

猜你喜欢

转载自blog.csdn.net/weixin_42129856/article/details/81100548