接口和抽象类(一篇搞定其概念以及区别)"/>
接口和抽象类(一篇搞定其概念以及区别)
首先明确一点,接口的用处是什么:
由于java的单继承性质,所以子类只能有一个父类,这样就可能让我们代码冗余,繁琐。接口就是为了解决java中这一问题诞生的。
接口概念:
Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
举个例子:
笔记本上有usb插口,usb型号的鼠标可以插上用,同样u盘也可以插上用。而鼠标和u盘都是usb类型的接口就是一些方法特征的集合。
笔记本上原有的usb就对应"一个接口只有方法的特征没有方法的实现"这句话。
那么很显然,鼠标和u盘用处当然不同,把鼠标和键盘看作是java中两个类,也就对应了"因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。"
这样以来java虽然不支持多继承但是接口是可以让不同的类来实现它的。
代码:
public interface INterfaceUSB {public void USB();
}
class U_Dick implements INterfaceUSB{public void keep(){System.out.println("u盘可以保存数据");}@Overridepublic void USB() {System.out.println("U盘是usb类型可以实现INterfaceUSB接口");}
}
class Mouse implements INterfaceUSB{public void move(){System.out.println("鼠标可以移动光标");}@Overridepublic void USB() {System.out.println("这个鼠标也是符合usb类型可以实现INterfaceUSB接口");}
}
有些同学可能会有个疑问,为什么说代码符合usb类型,或者说这样看好像什么类都可以实现这个接口?(没有这问题就跳了别看,这其实是我自己碰到的问题)
这就涉及到接口的实现的知识了,任何类要实现接口就必须符合接口所定义的规范,也就是要实现接口中所有定义的方法。
就像现实生活中鼠标和u盘要插电脑上的usb接口,那么首先他们要满足自己本身就是usb类型。
接口的使用注意点:
- 接口与类是属于并列的关系,并不能说在一个类里定义一个接口
- 所有实现接口的类必须要实现接口中定义的“所有”方法
- 接口中的方法一般没有内容
- 语法:class 类名 implements 接口名
抽象类:
概念:“Java语言中,用abstract 关键字来修饰一个类时,这个类叫作抽象类。抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。”
通俗的说,就是把两个以及以上对象具有的相同的方法向上提取为一个类,这样方便调用,也减少代码冗余。
代码:
定义一个员工类Employee,里面对work方法抽象
public abstract class Employee {String name;int id;double salary;public Employee(){}public abstract void work();//工作方法
}
经理类中那么经理也是员工,但是经理有具体的自己的”工作方法“
public class Manager extends Employee {@Overridepublic void work() {System.out.println("Manager主要负责分发任务");}
}
抽象类的使用注意点:
- 抽象类一定要被继承,不然抽象类没什么意义
- 抽象类压根不能创建对象,不是不想是不能
- 子类可以创建对象,用来实现抽象类所有方法,若没有实现所有抽象方法,则子类也是一个抽象类
区别:
综上:接口是定义一个标准,满足这个标准的都可以实现它,抽象类是对类的抽象,是相同方法向上提取。
简而言之:接口是表示这个对象能做什么,抽象类表示这个对象具体是什么
更多推荐
接口和抽象类(一篇搞定其概念以及区别)
发布评论