抽象类和接口

abstract关键字

1.一个方法可以被修饰为abstract,此时代表这个方法可以不进行实现。此时被称为抽象方法!,2.如果一个类当中包含抽象方法此时这个类必须是抽象类。没有抽象方法,这个类也可以称为抽象类

问题:什么情况下一个类可以被定义为抽象?

当不能描述具体的对象的时候

3.抽象类当中定义的成员和普通类没有区别;

4.抽象类不可以被实例化

问题抽象类不能实例化存在的意义?为了被继承

5.当一个普通类继承这个抽象类之后,必须重写抽象类的抽象方法

6.抽象类也是可以发生动态绑定和向上转型的,也可以发生多态

抽象类也是类,可以包含普通方法和属性,甚至是构造方法。

抽象类特性

1.抽象类不能直接实例化对象

2.抽象方法不能是private,抽象方法也要满足重写的特点。被static final private 都是不能发生重载的

abstract 和 final 是对立的

3.当一个普通类A继承一个抽象类不想重写抽象类方法,可以把这个普通类A改为抽象类,如果A这个抽象类再次被普通类B继承,B这个类需要重写所有未被重写过的抽象方法。

4.抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类。

抽象类的作用:使用抽象类相当于多了一重编译器的校验。
接口

接口就是公共的行为规范标准,在Java中接口可以看成是,多个类的公共规范,是一种引用数据类型。

接口的修饰词可以为abstract,public一个类可以实现多个接口

关键字interface

1.接口的定义可以使用interface

2.接口当中的成员变量,默认为public static final 修饰的,定义的时候必须初始化!以后定义可以省略掉 public static final

3.接口当中的方法默认是public abstract修饰的,不能有具体的实现

4.在接口当中有两个方法是可以实现方法的1.default 2.static这两个修饰的方法可以有具体的实现。

5.接口也不可以被实例化

6.接口需要被类实现需要使用关键字implements来实现。class implements Ishape{}

7.当一个类实现了一个接口那么这个类就要重写这个方法。

8.接口可以发生向上转型,可以发生动态绑定,也可以发生多态

学习完接口,做一个小案例usb接口的实现

首先需要定义一个接口,接口中有两个方法,接口中的两个功能分别是键盘跟鼠标

openDevice是从父类继承下的,发生动态绑定,也就是多态,而click是鼠标特有的属性,所有需要将父类强转成子类,发生向下转型,这样才可以调用click.

接口特性

1.接口类型是引用类型,不能直接new接口的对象。

2.接口中每一个方法都是public的抽象方法。隐式指定为public abstract。

3.接口中的方法是不能在接口中实现的,只能由接口的类来实现。 

4.重写接口中方法时,不能使用默认权限。

5.接口中可以含有变量,

6.接口中不能有静态代码块和构造方法。

7.接口虽然不是类,但是接口编译完成后字节码文件的后缀格式也是.class

8.如果类没有实现接口中所有的抽象方法,则类必须设置为抽象类。

对default修饰的方法进行重写则会调用重写的方法。

可以实现多个接口

Java的接口解决了Java不能多继承的问题

类 -》继承类 -》接口

接口的好处让程序员忘记类型,只要有接口就可以实现功能。可以发生动态绑定

接口之间的继承,相当于把多个接口合在一起

对于引用数据来说比较,只能通过特点的方式来进行比较。此时就需要一个接口,

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值