快速记忆java抽象类和接口的区别

java中,抽象类和接口的区别对于初学者很容易记混淆。下边就从以下几个角度来梳理以下去区别:

1,方法的角度:

抽象类的方法可以是抽象的,也可以是不抽象的;抽象类的抽象方法必须被子类重写;

抽象类中可以包含已经实现的方法;

接口中不能包含已被实现的方法,其声明的方法由实现它的类来重写。

2,继承和实现的角度:

2.1 抽象类可以实现接口,接口也可以实现接口(但是接口必须是以关键字extends来继承接口);

interface Work{ }
interface Program extends Work{ }
abstract class Person{ }
abstract class Engineer extends Person implements Program{ }

2.2 抽象类可以继承抽象类,但是接口不可以继承抽象类(因为superinterface must be an interface)。

2.3 子类中的定义抽象方法不能与父类的抽象方法同名;但是如果子类和父类都没有实现该方法,也是可以声明同名的抽象方法。

3,实例化的角度:

抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。

4,修饰符的角度

abstract不能与final并列修饰同一个类。

abstract 不能与private、static、final或native并列修饰同一个方法。

接口中的成员变量默认被声明为public static final的

接口中的方法只能被声明为public的.

5,内部类的角度

抽象类中可以定义接口,也可以定义抽象类;

接口中可以定义抽象类,也可以定义接口;

实现接口的非抽象类必须要实现该接口的所有方法。抽象类可以不用实现。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值