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不能多继承的问题
类 -》继承类 -》接口
接口的好处让程序员忘记类型,只要有接口就可以实现功能。可以发生动态绑定
接口之间的继承,相当于把多个接口合在一起
对于引用数据来说比较,只能通过特点的方式来进行比较。此时就需要一个接口,