抽象类
再面向对对象的语言中,所以的对象都是通过类来描述的,但如果这个类无法准确的描述对象的
话,那么就可以把这个类设置为抽象类。
实例
这里用到abstract修饰,表示这个类或方法是抽象方法
因为会重写motifs里的show方法,所以无论里面写什么都不会被执行,那么就把他写成抽象方法
然后再子类中重写她,可以说抽象类就是用来被继承的,而抽线方法就是用来被重写的
要注意的是,抽象类中可以有普通方法和成员变量,甚至类里面都可以没有抽象方法
但是如果里面有一个抽象方法,那么就必须要把这个类用abstra修饰
当之类继承了抽线父类之后,子类还必须要重写父类的抽象方法,若不想重写抽象方法,那么这个子类也是抽象类
但如果你不想要在这个类中重写这个方法,那可以也把这个类也设置成抽象类,只不过当别人要继承这个类,需要重写这个类和这个类的父类的所有抽象方法
抽象方法是用来被重写的,所以不能有final static private修饰
且抽象类不能被实例化
要是用的话必须要实例化子类,然后通过向上转型来使用
抽象类作用
抽象了本身不能被实例化,只能通过实例化子类,然后向上转型重写父类的抽象方法才能使用
这样就多了一层编译器的校验,因为你不有些工作是不该父类去完成的,那么你把它写成抽象方法,这样就确保这是子类去完成的任务
接口
生活中常见的usb接口,当我们要传输数据时,可以使用usb插头插入usb接口中然后进行各种操作,而这个usb接口就相当于是一个规范,你要通过usb接口进行数据的传输,就必须要有usb接口,而如果你设备有usb插头,不管是什么设备,相机,电视,电脑还是什么的,都能插入usb插头进行操作,而java中的接口也是这样,接口是公共行为的规范,再大家实现是你只需要符合规范
(有usb插头)那么你就可以使用这个接口(usb接口)
语法
接口的创建
和类的写法一样,只不过类使用class去修饰,而接口用interface去修饰
接口中的成员的权限都是public,且成员变量默认是由public final修饰
成员方法默认是由public abstract修饰
若要再接口中存在由方法体的成员方法,那么就要用static 或者 final修饰
接口的使用
需要用类去实现该接口,因为接口中有抽象成员
two这个类必须重写所有接口都有的抽象类(这里我把其他的抽象类都注释了)
调用
对于接口中存在的有方法体的方法的使用,只有用default修饰的能直接调用,而static的就需要用default去间接调用
没有static修饰的Show_5方法的存在
接口可以理解为更加抽象的抽象类,抽象类中可以允许构造方法,和非抽象成员方法的存在
而接口中只能是抽象方法,且成员都有固定的修饰(成员变量为 public final
成员方法为 public abstract)相比于抽象类,接口的好处是一个类可以使用多个接口,
这样再实际使用时灵活性就更高了,而这样设计程序有个好处就是再具体使用时看以忘记对类型,
只需要关注对象是否具有某个功能(也就是使用了这个功能对应的接口)
接口件也能继承,用extends关键字,之后再使用接口是需要把继承的接口的抽象类也要重写
下篇介绍几个实际接口