抽象类与接口
1. 抽象类
定义:在class前添加abstract就定义了一个抽象类
特点:抽象类不能创建对象,可以有普通方法也可以没有抽象方法。因此被继承才有意义
2. 抽象方法
定义:在方法前标记ab就定义了一个抽象方法
特点:要定义抽象方法只能在抽象类中,抽象类有普通子类则必须重写抽象方法,抽象方法不加方法体
因为抽象类和方法要被继承被重写所以不能static,pravite,final
3. 接口
什么是接口
表示一种规范,使用抽象方法来定义一组功能。让子类去实现
接口的定义
interface 接口名称{
}
接口特点
接口实际上是抽象类,它内部的abstranct可以省略不写。对于它的字段是默认的public static final,方法是public abstract。接口没有构造器
接口的实现
一个类可以实现多个接口但类只能继承一个
interface Iwalk{
}
interface Ifly{
}
class Rabort implements Iwalk,Ifly{
}
接口与抽象类的区别
相同点:1.都是被其他类实现或者被继承,2.都不能实例化,3.都可以定义抽象方法
不同点:1.接口没有构造器,抽象类当中有构造器,2.抽象类可以包含普通方法,接口方法默认就是public abstract故只有抽象方法,3.接口当中成员变量默认为public static final,抽象类中就是默认权限(包访问权限),接口的方法默认是public abstract,抽象类是默认权限
面向接口编程
面向接口编程:把实现类对象赋值给接口类型的变量
好处:屏蔽了不同类之间实现差异,提升了代码复用性
interface IUSB{
void swapData();
}
class MotherBoard{
void pluginIn(IUSB u){
u.swapData();
}
}
class KeyBoard implements IUSB{
public void swapData(){
System.out.println("打字");
}
}
class Mouse implements IUSB{
public void swapData(){
System.out,println("移动鼠标");
}
}
public class Main{
public static void main(String[] args){
IUSB m = new Mouse();
IUSB n = new KeyBoard();
MotherBoard a = new MotherBoard();
a.pluginIn(m);
a.pluginIn(n);
}
}
总结
对于抽象方法抽象类接口它们都是很好的服务了多态的思想,减少了方法的重载的重复代码。希望的结果是每个子类的不同特性所得到的不同结果,对于父类仅仅是为了有这样一个方法来去重写并不是需要其中的内容有了抽象方法或者接口就可以不用去写本来就不需要的方法体并且也避免添加的子类忘记重写导致错把父类的呈现当作子类的结果
本文分享自微信公众号 - IT那个小笔记(qq1839646816)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。