111升学论坛

 找回密码
 加入家园
专业、学校怎么选?免费公益咨询解答开通学校版块微信:543646没考上高中怎么办,不要慌!
热门:大连报关学校招生网增加印象分,实用新型专利包过申请发明专利申请并不难,代写全部材料,轻松申请!
查看: 407|回复: 2

写过接口吗?初学者回答interface,面试官说此接口非彼接口

[复制链接]

44

主题

24

回帖

192

积分

新手上路

Rank: 1

积分
192
发表于 2021-2-17 21:21:43 | 显示全部楼层 |阅读模式
集群智慧云科服发明专利申请
初学者认知误区:经常听见一些大佬讲接口,他以为是interface。其实不是,此接口非彼接口。
tu51P9r1958sZvWz.jpg



给初学者解答:通常企业中程序员之间交流的接口是通讯接口(后期再做解释),不是interface。Interface是为了设计上做扩展,也是初学者必须掌握的基础知识。
Java 接口

接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法
接口的声明
接口的声明语法格式如下:
[可见度] interface 接口名称 [extends 其他的接口名] {
// 声明变量
// 抽象方法
}
Interface关键字用来声明一个接口。下面是接口声明的一个简单例子。
/* 文件名 : DemoInterface.java */
import java.lang.*; //引入包
public interface DemoInterface {
//任何类型 final, static 字段
//抽象方法
}
接口有以下特性:
接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
接口中的方法都是公有的。
接口的实现
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
实例如下:
Animal.java 文件代码:
...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...
/* 文件名 : Dog.java */
public class Dog implements Animal{
public void eat(){
System.out.println("Dog eats");
}
public static void main(String args[]){
Dog d = new Dog ();
d.eat();
}
}
重写接口中声明的方法时,需要注意以下规则:
类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。
类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。
如果实现接口的类是抽象类,那么就没必要实现该接口的方法。
在实现接口的时候,也要注意一些规则:
一个类可以同时实现多个接口。
一个类只能继承一个类,但是能实现多个接口。
一个接口能继承另一个接口,这和类之间的继承比较相似。
接口的继承

一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。
// 文件名: Grandfather.java
public interface Grandfather
{
public void setSaveMoney(double money);
}
// 文件名: Father.java
public interface Father extends Grandfather
{
public void setSaveHouse (int num);
}
// 文件名: Son.java
public interface Son extends Father
{
public void setSaveCulture ();
}
Son接口自己声明了一个方法,从Father接口继承了两个方法,这样,实现Son接口的类需要实现三个方法。
接口的多继承

在Java中,类的多继承是不合法,但接口允许多继承。
public interface Son extends Father,Grandfather
接口特点

1.接口可以多继承
2.接口的方法声明必须是 public abstract 即便不写默认也是
3.接口里面不能包含方法具体实现
4.类实继承接口必须实现接口里申明的全部方法,除非该类是抽象类
5.类里面可以声明 public static final 修饰的变量
6.接口不能被实例化,但是可以被实现类创建
什么时候使用抽象类和接口

1、 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
2、 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
3、如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
4、在 JDK1.8,允许我们给接口添加两种非抽象的方法实现:
1、默认方法,添加 default 修饰即可;
2、静态方法,使用 static 修饰;示例如下:
interface Test{
//这个是默认方法
default String get(String aa){
System.out.println("我是jdk1.8默认实现方法...");
return "";
}
//这个是静态方法
static void staticmethod(){
System.out.println("我是静态方法");
}
}
调用得话,静态方法只能通过接口名调用,不可以通过实现类的类名或者实现类的对象调用,default 方法只能通过接口实现类的对象来调用。
接口的含义理解

接口可以理解成统一的协议, 而接口中的属性也属于协议中的内容。但是接口的属性都是公共的,静态的,最终的。
接口的成员特点:
1、成员变量只能是常量,默认修饰符 public static final
2、成员方法只能是抽象方法。默认修饰符 public abstract所以,Java 接口中,使用变量的时候,变量必须被赋值。
//所以接口定义属性
public interface People {
int age=10;
String name="输出名字"; // 接口里面定义的成员变量都是 public static final 修饰
public void eat();  
}
所有的变量必须给出初始值,且绝对不会被修改,因为隐藏的修饰符为 public static final。
Java 抽象类和接口总结

1、abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个 interface。
2、在 abstract class 中可以有自己的数据成员,也可以有非 abstarct 的成员方法,而在 interface 中,只能够有静态的不能被修改的数据成员(也就是必须是 static final 的,不过在 interface 中一般不定义数据成员),所有的成员方法都是 abstract 的。
3、abstract class 和 interface 所反映出的设计理念不同。其实 abstract class 表示的是 "is-a" 关系,interface 表示的是 "has-a" 关系。
4、实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。
5、接口中定义的变量默认是 public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。
6、抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。
7、接口中的方法默认都是 public,abstract 类型的。
结论: abstract class 和 interface 是 Java 语言中的两种定义抽象类的方式,它们之间有很大的相似性。但是对于它们的选择却又往往反映出对于问题领域中的概 念本质的理解、对于设计意图的反映是否正确、合理,因为它们表现了概念间的不同的关系(虽然都能够实现需求的功能)。这其实也是语言的一种的惯用法,希望读者朋友能够细细体会。
回复

使用道具 举报

21

主题

35

回帖

206

积分

中级会员

Rank: 3Rank: 3

积分
206
发表于 2021-2-17 21:51:43 | 显示全部楼层
是restful接口吧
回复

使用道具 举报

35

主题

27

回帖

190

积分

新手上路

Rank: 1

积分
190
发表于 2021-2-17 22:21:43 | 显示全部楼层
转发了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入家园

本版积分规则

QQ|Archiver|手机版|小黑屋|111升学论坛

GMT+8, 2024-9-20 05:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表