java抽象类,接口和LAB2

本文探讨了抽象类和接口在软件设计中的应用。抽象类作为模板方法模式,定义了通用代码并留出特定行为由子类实现。接口则是一种规范,强制实现类遵循其定义的抽象方法。接口可以多实现,类只能单继承,体现了多态性和模块化设计。JDK8以后接口中允许包含默认方法和静态方法,增强了灵活性。
摘要由CSDN通过智能技术生成

一、抽象

抽象方法只有方法签名不能写方法体代码,且抽象方法对应的类也要对应为抽象的;

抽象类可以理解为不完整的,当某个父类知道子类一定要完成某个行为,但是它们的行为实现又不同,父类就将该行为定义为抽象方法的形式,交给子类完成

注意:

一个类如果继承抽象类,那么这个类一定要重写抽象类的所有抽象方法,否则这个类也要被定义为抽象类。

抽象类中可以没有抽象方法,有抽象类方法的一定是抽象类。

不能用abstract修饰变量,代码块,构造器

得到了抽象方法,失去了创建对象的能力

因为加入抽象类可以创建对象,那么这个对象的方法实现连方法体都没有,或者不知道该如何执行哪个子类的方法

final和abstract是互斥关系

抽象类:模板方法模式:
将功能定义成一个所谓的模板方法,放在抽象类中,模板方法中只定义通用且能确定的代码

不能决定的功能定义成抽象方法让具体子类去实现

建议用final修饰模板方法,因为它不应该被子类重写,这样更容易防止子类重写,更安全

就像LAB2中的图一样,只不过LAB2中只有创建图是公用的于是在Graph类中就直接用了edge或者vertices的一种实现,其他的方法比如add,remove等等,由于两种实现的内部数据结构不同,就要交给子类去实现,但Graph也算是一种抽象方法模式。

LAB2的模板方法模式提高了代码的复用性,减少了重复代码的使用。

二、接口(一种规范)

接口中的成分特点:JDK8之前只能有抽象方法和常量:

接口是一种规范思想,所以里面的方法和常量应该是公开的,且可以省略不写,系统会默认公开

接口是用来被实现的(实现类),可以理解为所谓的子类,格式:
修饰符 class 实现类 implements 接口1,接口2,接口3,...{

}

接口可以被类单实现,也可以被多实现,如LAB2中的利用边和点两种形式来实现Graph

接口实现的注意事项:一个类实现接口,必须重写完接口的全部抽象方法,否则这个类需要定义成抽象类

类和类的关系:单继承

类和接口的关系:多实现

接口和接口的关系:多继承,一个接口可以同时继承多个接口

接口多继承的作用:规范合并,整合多个接口为同一个接口,便于子类实现

JDK8以后允许接口中直接带有方法体的方法

类型:默认方法:类似普通实例方法,必须要用default修饰,默认用了public修饰,要用实现类的对象来调用

        静态方法:必须要用static修饰,默认会public修饰,接口的静态方法必须用本身的接口名称调用例如Graph中的empty方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值