JAVA学习笔记7 抽象类、接口

抽象类

在这里插入图片描述不给方法体:意思是只有public void eat()没有{}以及花括号内的内容。
但是仅仅是这样会报错,只能在抽象类中申明抽象方法,所以需要在类名和方法名前加上abstract。
在这里插入图片描述

抽象类的特点在这里插入图片描述

①抽象类必须使用abstract对类和方法进行修饰,不然会报错。
②抽象类中可以没有抽象方法,但抽象方法只能存在于抽象类中。
③抽象类不能直接实例化(new对象),但可以通过继承后的多态形式进行实例化。
④抽象类的子类要么重写@Override抽象父类中的所有方法,要么这个子类也是抽象类(abstract修饰)。

在这里插入图片描述

抽象类的成员特点

在这里插入图片描述

抽象类的抽象成员方法的作用:限制子类必须对其进行重写,也就是规定了子类必须完成某些特殊的方法才可以,如果不重写就会报错。在这里插入图片描述###提高代码的复用性是通过继承来实现的

接口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接口的实现类:使用implement关键字修饰接口类,就类似于继承的一种概念,不过这里称为实现类而不是子类。又由于接口是类似于抽象的一种类,所以接口的实现类也必须满足抽象类的子类的要求,也即是子类必须是抽象类,或重写所有父类的抽象方法。
这里的实现类就必须是抽象类或重写接口中的所有抽象方法。
在这里插入图片描述接口其实就类似于抽象类abstract,也不能直接进行实例化,只能通过多态的方式进行实例化。并且接口里面还不能有非抽象方法,但是可以有静态方法,所以应该算作是一类更严格的抽象。并且接口里面的方法就算不加public abstract也默认为抽象类在这里插入图片描述其中多态分为具体类多态(也就是普通对象进行多态,但很少使用),抽象类多态(抽象类的多态实现),接口多态。

接口的成员特点

在这里插入图片描述成员变量默认被public static final修饰,可以在任意作用域下被访问到,即使没有进行实例化。
实际上接口中还可以有静态方法 如:
在这里插入图片描述

在这里插入图片描述接口中不能存在构造方法,接口实现类的super构造方法来自于object类。但抽象类可以有构造方法,所以接口是更严格的抽象。
在这里插入图片描述
关于接口的成员方法只能是抽象方法和静态方法:
在这里插入图片描述
在实际开发的过程中既会有抽象类也会有接口,一个类既可以基础于某一个抽象类,也可以成为某个接口的实现类如:

public class Cat extends Animal implements Jumpping

但一般使用最多的还是这个类本身来实例化对象,因为这类里面的方法是最多的,既有抽象类的继承方法变量,也有接口继承的方法和变量。

在这里插入图片描述

类和接口的关系

①接口于接口之间可以多继承(类与类之间不能,只能单一继承)
②类可以多实现于接口,并且再继承一个类
在这里插入图片描述在这里插入图片描述抽象类与接口的主要区别:抽象类主要是对的抽象,包括属性和行为,而接口主要是对行为抽象。

如这个例子:用抽象类和接口同时实现了一个门Door,他们都可以完成close和open两个方法。在这里插入图片描述
但是后来门升级了,新增了警报的功能,这个alarm的方法可以添加到抽象类中也可以添加到接口中,但是我们一般都不这样子做。因为接口door的实现类可以并不有开门与关门的功能。在这里插入图片描述一般来说,门都有开门和关门的功能,所以open与close的方法放到类door中,但是不是所有的门都有alarm警报的功能,这部分功能是额外加上去的,所以应该放到alarm接口里去,然后让需要添加警报功能的door去实现这个接口,这样就新增了警报alarm的方法,并且也符合现实逻辑。在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值