java接口与抽象类学习

1.什么是抽象类


特点整理:

抽象类,不能被实例化,非抽象的类的子类,可以实例化;

抽象类中不能含有抽象方法,但是如果是抽象方法,就一定是抽象类;

抽象类中方法只是申明,但无具体方法体内容;

抽象类中方法必须使用abstract进行

抽象方法必须为public与protected修饰,不能使用private(如果方法不能被继承,子类方法将无法得到实现)

如果抽象类被子类继承,则子类需要实现抽象类的抽象方法,如果子类没有实现父类的抽象方法,在需要将子类也定义为抽象方法。

抽象类就是为了继承而存在的,如果不继承抽象类方法无法实现与使用。



2.什么接口

接口类中的变量会被隐形地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误)

使用interface 的作为修改

接口类中方法会被隐形地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误)

接口中所有的方法不能有具体的实现(接口中的方法必须都是抽象方法)

一个类可以继承多个接口,解决类继承1对1的操作

3.语法不同点

1.语法层面上的区别

  1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

  2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

  3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

  4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

以上来自https://www.cnblogs.com/dolphin0520/p/3811437.html

你可能感兴趣的:(java接口与抽象类学习)