1.概念的区别
抽象方法指只有功能声明,没有功能主体实现的方法。具有抽象方法的类一定为抽象类。
接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。
接口的特点:
接口指明了一个类必须要做什么和不能做什么,相当于类的蓝图。
· 一个接口就是描述一种能力,比如“运动员”也可以作为一个接口,并且任何实现“运动员”接口的类都必须有能力实现奔跑这个动作(或者implement move()方法),所以接口的作用就是告诉类,你要实现我这种接口代表的功能,你就必须实现某些方法,我才能承认你确实拥有该接口代表的某种能力。
· 一个JAVA库中接口的例子是:Comparator 接口,这个接口代表了“能够进行比较”这种能力,任何类只要实现了这个Comparator接口的话,这个类也具备了“比较”这种能力,那么就可以用来进行排序操作了。
· 如用关键字interface,你可以从类的实现中抽象一个类的接口。也就是说,用interface,你可以指定一个类必须做什么,而不是规定它如何去做。
2.定义的区别
1)抽象类&抽象方法的定义
基本语法:
public abstract 返回值类型 方法名(参数);
抽象类定义的格式:
public abstract class 类名 {
}
具体使用方法:
//员工
public abstract class Employee{
public abstract void work();//抽象函数。需要abstract修饰,并分号;结束
}
//manager
public class Teacher extends Employee {
public void work() {
System.out.println("正在赋予权限");
}
}
//customer
public class Assistant extends Employee {
public void work() {
System.out.println("正在使用该系统");
}
}
//开发人员
public class Manager extends Employee {
public void work() {
System.out.println("正在维护此系统");
}
}
2)接口的定义
一个简单的接口:
interface in1{
//public,static and final
final int a = 10;
//public and abstract
void display();
}
用implement关键字实现这个接口:
class testClass implements in1{
public void display(){
System.out.println("Geek");
}
}
产生实例的方法:
1.实现接口的方法
interface USB {
void read();
void write();
}
class YouPan implements USB {
@Override
public void read() {
System.out.println("U盘正在通过USB功能读取数据");
}
@Override
public void write() {
System.out.println("U盘正在通过USB功能写入数据");
}
}
2.具体实现
public class Main {
public static void main(String[] args) {
//生成一个实现可USB接口(标准)的U盘对象
YouPan youPan = new YouPan();
//调用U盘的read( )方法读取数据
youPan.read();
//调用U盘的write( )方法写入数据
youPan.write();
//生成一个实现可USB接口(标准)的键盘对象
JianPan jianPan = new JianPan();
//调用键盘的read( )方法读取数据
jianPan.read();
//调用键盘的write( )方法写入数据
jianPan.write();
}
}
使用接口类型的引用指向一个实现了该接口的对象:
public class Main {
public static void main(String[] args) {
//USB接口类引用可以指向一个实现了USB接口的对象
USB youPan = new YouPan();
//调用U盘的read( )方法读取数据
youPan.read();
//调用U盘的write( )方法写入数据
youPan.write();
//USB接口类引用可以指向一个实现了USB接口的对象
USB jianPan = new JianPan();
//调用键盘的read( )方法读取数据
jianPan.read();
//调用键盘的write( )方法写入数据
jianPan.write();
}
}
3.总结
接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。
抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。
人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.
所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。
第一点. 接口是抽象类的变体,接口中所有的方法都是抽象的。而抽象类是声明方法的存在而不去实现它的类。
第二点. 接口可以多继承,抽象类不行
第三点. 接口定义方法,不能实现,而抽象类可以实现部分方法。
第四点. 接口中基本数据类型为static 而抽类象不是的。
当你关注一个事物的本质的时候,用抽象类;当你关注一个操作的时候,用接口。
————————————————
版权声明:本文为CSDN博主「冯立彬」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fenglibing/article/details/2745123