接口和抽象类(一篇搞定其概念以及区别)

编程入门 行业动态 更新时间:2024-10-23 23:20:07

<a href=https://www.elefans.com/category/jswz/34/1771365.html style=接口和抽象类(一篇搞定其概念以及区别)"/>

接口和抽象类(一篇搞定其概念以及区别)

首先明确一点,接口的用处是什么:

由于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主要负责分发任务");}
}

抽象类的使用注意点:

  • 抽象类一定要被继承,不然抽象类没什么意义
  • 抽象类压根不能创建对象,不是不想是不能
  • 子类可以创建对象,用来实现抽象类所有方法,若没有实现所有抽象方法,则子类也是一个抽象类

区别:

综上:接口是定义一个标准,满足这个标准的都可以实现它,抽象类是对类的抽象,是相同方法向上提取。

简而言之:接口是表示这个对象能做什么,抽象类表示这个对象具体是什么

更多推荐

接口和抽象类(一篇搞定其概念以及区别)

本文发布于:2024-02-06 10:46:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1748429.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:接口   区别   概念   抽象类

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!