接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
抽象类 | 接 口 | |
---|---|---|
构造器 | 有构造器 | 不能构造器 |
实例化 | 可以实例化对象 | 无法实例化对象 |
实现 | 子类extends继承抽象类,并实现抽象类中声明的所有方法 | 类implements实现接口,需要提供其中声明的所有方法 |
访问修饰符 | 无限制 | 默认且必须是public static final |
继承 | 类无法多继承,但是可以继承多个接口 | 接口可以继承接口, |
速度 | 更快 | 因为需要寻找实现方法,比较慢 |
更新 | 如果要在抽象类中添加新方法,你可以给他提供默认的实现,因此不需要改变其他代码 | 若要在接口中添加方法,那么必须在所有引用该接口的类中实现 |
//定义的抽象类“建筑”
abstract class Architecture{protected String name;protected double area;public Architecture(String name,double area){this.name=name;this.area=area;}public void show() {System.out.println("Name: "+name);System.out.println("Area Coveredx: "+area+" square meter");}}
//接口“学校”,为实现这个接口的类确定规范
interface school
{void ShowSchoolMotto();
}
//另一个接口“地址”interface Location
{//default关键词修饰非抽象方法default void ShowSchoolLocation() {System.out.println("Location: NONE");};
}
//可以看到这个类继承了Architecture ,并实现了school,Location接口
class HZNU extends Architecture implements school,Location{int age;String motto;String Location;public HZNU(String name,double area,int age,String schoolmotto,String Location) {super(name, area);this.age==schoolmotto;this.Location=Location;}public void ShowSchoolMotto() {System.out.println("School Motto : "+motto);}public void show() {super.show();System.out.println("Age: "+age+" years");ShowSchoolMotto();ShowSchoolLocation();//因为default 关键词修饰,不需要实现}
}
public class text_1
{public static void main(String[] args){HZNU myCollege=new HZNU("Hangzhou Normal University",2000000,114,"勤慎诚恕·博雅精进","");myCollege.show();}
}
程序输出:
Name: Hangzhou Normal University
Area Coveredx: 2000000.0 square meter
Age: 114 years
School Motto : 勤慎诚恕·博雅精进
Location: NONE
在写文章时查阅的资料上说,存在着一种争论,就是“多态究竟是应该通过抽象继承实现还是通过实现接口实现”,教科书上的说是多态必须有继承,但是现在接口实现多态正在成为一种潮流。
接口作为一种类似模板的作用,限制更少,相对抽象类更加灵活,并且接口可以支持多继承,更加方便地实现一些功能。但是相对的,因为接口只是一种模板,当中没有提供完整的实现方法,需要对每一个实现该接口的类单独实现,并且当你需要修改更新时还要对每一个进行修改。
可以看出,抽象类和多态的引用场景不尽相同,我们在设计程序时要深入思考程序的维护和修改需求,再编写代码。毕竟程序员不是打字员。
本文发布于:2024-01-31 12:27:38,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170667526128508.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |