【Java基础】java如何写一个接口

2021-01-29 21:05发布

8条回答
浅浅77
2楼 · 2021-02-01 09:30

接口的定义:

public interface  usb{}

关键字 interface;

实现接口 :public class Computor implements  usb{}

实现接口的关键字 : implements;

image.png

接口中的方法都是抽象方法,所以 public abstract 可以省略不写,所有的变量都是常量,必须赋值,默认public  abstract  final int a=0;

随便少写任何一个修饰符系统都会自动补全

image.png

接口之间可以多继承,一个类可以实现那个多个接口,接口还有一个功能是用来解耦合,接口是一个特殊的抽象类,接口之间的所有访问修饰符都是public ,所有的方法都是抽象方法,所有的变量都是常量;

image.png

一个类实现了一个接口,必须实现接口内的所有方法;

例子;public interface USB {  void show();}

image.png

public class U盘 implements USB{

 public void show() {  System.out.println("我是一个U盘..."); }

}

public class 移动硬盘 implements USB{

 public void show() {  System.out.println("我是移动硬盘....."); }

}

image.png

public class 电脑 {  public void 插(USB usb) {  usb.show(); } }image.png


我自己打call
3楼 · 2021-02-02 09:33

Java 接口

接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

接口与类相似点:

  • 一个接口可以有多个方法。

  • 接口文件保存在 .java 结尾的文件中,文件名使用接口名。

  • 接口的字节码文件保存在 .class 结尾的文件中。

  • 接口相应的字节码文件必须在与包名称相匹配的目录结构中。

接口与类的区别:

  • 接口不能用于实例化对象。

  • 接口没有构造方法。

  • 接口中所有的方法必须是抽象方法。

  • 接口不能包含成员变量,除了 static 和 final 变量。

  • 接口不是被类继承了,而是要被类实现。

  • 接口支持多继承。

接口特性

  • 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。

  • 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。

  • 接口中的方法是不能在接口中实现的,只能由实现接口的类来实现接口中的方法。

抽象类和接口的区别

  • 1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。

  • 2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。

  • 3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。

  • 4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

:JDK 1.8 以后,接口里可以有静态方法和方法体了。


接口的声明

接口的声明语法格式如下:

[可见度] interface 接口名称 [extends 其他的接口名] {        // 声明变量        // 抽象方法}

Interface关键字用来声明一个接口。下面是接口声明的一个简单例子。

NameOfInterface.java 文件代码:

/* 文件名 : NameOfInterface.java */import java.lang.*;//引入包 public interface NameOfInterface{   //任何类型 final, static 字段   //抽象方法}


接口有以下特性:


  • 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。

  • 接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。

  • 接口中的方法都是公有的。

实例

Animal.java 文件代码:

/* 文件名 : Animal.java */interface Animal {   public void eat();   public void travel();}


接口的实现

当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。

类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

实现一个接口的语法,可以使用这个公式:

Animal.java 文件代码:

...implements 接口名称[, 其他接口名称, 其他接口名称..., ...] ...

实例

MammalInt.java 文件代码:

/* 文件名 : MammalInt.java */public class MammalInt implements Animal{   public void eat(){      System.out.println("Mammal eats");   }   public void travel(){      System.out.println("Mammal travels");   }   public int noOfLegs(){      return 0;   }   public static void main(String args[]){      MammalInt m = new MammalInt();      m.eat();      m.travel();   }}

以上实例编译运行结果如下:

Mammal eatsMammal travels

重写接口中声明的方法时,需要注意以下规则:

  • 类在实现接口的方法时,不能抛出强制性异常,只能在接口中,或者继承接口的抽象类中抛出该强制性异常。

  • 类在重写方法时要保持一致的方法名,并且应该保持相同或者相兼容的返回值类型。

  • 如果实现接口的类是抽象类,那么就没必要实现该接口的方法。

在实现接口的时候,也要注意一些规则:

  • 一个类可以同时实现多个接口。

  • 一个类只能继承一个类,但是能实现多个接口。

  • 一个接口能继承另一个接口,这和类之间的继承比较相似。


接口的继承

一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。

下面的Sports接口被Hockey和Football接口继承:


// 文件名: Sports.javapublic interface Sports{   public void setHomeTeam(String name);   public void setVisitingTeam(String name);} // 文件名: Football.javapublic interface Football extends Sports{   public void homeTeamScored(int points);   public void visitingTeamScored(int points);   public void endOfQuarter(int quarter);} // 文件名: Hockey.javapublic interface Hockey extends Sports{   public void homeGoalScored();   public void visitingGoalScored();   public void endOfPeriod(int period);   public void overtimePeriod(int ot);}

Hockey接口自己声明了四个方法,从Sports接口继承了两个方法,这样,实现Hockey接口的类需要实现六个方法。

相似的,实现Football接口的类需要实现五个方法,其中两个来自于Sports接口。


接口的多继承

在Java中,类的多继承是不合法,但接口允许多继承。

在接口的多继承中extends关键字只需要使用一次,在其后跟着继承接口。 如下所示:

public interface Hockey extends Sports, Event

以上的程序片段是合法定义的子接口,与类不同的是,接口允许多继承,而 Sports及 Event 可能定义或是继承相同的方法


标记接口

最常用的继承接口是没有包含任何方法的接口。

标记接口是没有任何方法和属性的接口.它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。

标记接口作用:简单形象的说就是给某个对象打个标(盖个戳),使对象拥有某个或某些特权。

例如:java.awt.event 包中的 MouseListener 接口继承的 java.util.EventListener 接口定义如下:

package java.util;public interface EventListener{}

没有任何方法的接口被称为标记接口。标记接口主要用于以下两种目的:

  • 建立一个公共的父接口:

    正如EventListener接口,这是由几十个其他接口扩展的Java API,你可以使用一个标记接口来建立一组接口的父接口。例如:当一个接口继承了EventListener接口,Java虚拟机(JVM)就知道该接口将要被用于一个事件的代理方案。

  • 向一个类添加数据类型:

    这种情况是标记接口最初的目的,实现标记接口的类不需要定义任何接口方法(因为标记接口根本就没有方法),但是该类通过多态性变成一个接口类型。


20200921文 - 做更棒的自己!
4楼 · 2021-02-02 10:58

实现接口的关键字 implements 来定义实现这个接口。如果访问不到接口的话,那就是没导入包。

猜不到结尾
5楼 · 2021-02-02 12:06

public interface IntStack {
public void push(int x);
public int pop();
public void show();
}

public class MyIntStack implements IntStack {
private int[] arrStack;
public MyIntStack(int length) {
arrStack = new int[length];
for( int i=0;i
arrStack[i]=-1;
}
public void push(int x) {
System.out.println(x);
}
public int pop() {
System.out.println("pop");
}
public void show(){
System.out.println("show");
}
}

我的网名不再改
6楼 · 2021-02-04 10:06
  1. 接口的定义:

    public interface  usb{}

    关键字 interface;

    实现接口 :public class Computor implements  usb{}

    实现接口的关键字 : implements;


    java如何编写接口

  2. 接口中的方法都是抽象方法,所以 public abstract 可以省略不写,所有的变量都是常量,必须赋值,默认public  abstract  final int a=0;

    随便少写任何一个修饰符系统都会自动补全

    java如何编写接口

  3. 接口之间可以多继承,一个类可以实现那个多个接口,接口还有一个功能是用来解耦合,接口是一个特殊的抽象类,接口之间的所有访问修饰符都是public ,所有的方法都是抽象方法,所有的变量都是常量;

    java如何编写接口

  4. 一个类实现了一个接口,必须实现接口内的所有方法;

    例子;public interface USB {  void show();}

    java如何编写接口

  5. public class U盘 implements USB{

     public void show() {  System.out.println("我是一个U盘..."); }

    }

    public class 移动硬盘 implements USB{

     public void show() {  System.out.println("我是移动硬盘....."); }

    }


    java如何编写接口

  6. public class 电脑 {  public void 插(USB usb) {  usb.show(); } }

    java如何编写接口


天才小馒头
7楼 · 2021-02-04 16:19

接口的定义:

public interface  usb{}

关键字 interface;

实现接口 :public class Computor implements  usb{}

实现接口的关键字 : implements;

接口中的方法都是抽象方法,所以 public abstract 可以省略不写,所有的变量都是常量,必须赋值,默认public  abstract  final int a=0;

随便少写任何一个修饰符系统都会自动补全

接口之间可以多继承,一个类可以实现那个多个接口,接口还有一个功能是用来解耦合,接口是一个特殊的抽象类,接口之间的所有访问修饰符都是public ,所有的方法都是抽象方法,所有的变量都是常量;

一个类实现了一个接口,必须实现接口内的所有方法;

苏酒儿
8楼 · 2021-03-18 10:59

接口通过interface来定义,声明的格式为:

[权限修饰符] interface 接口名称{ 

    抽象方法

    静态常量

}

java-小王子
9楼 · 2021-03-23 19:31

public interface  usb{}

关键字 interface;

实现接口 :public class Computor implements  usb{}

实现接口的关键字 : implements


相关问题推荐

  • 回答 156

    对于每一位才开始接触JAVA的新手来说,先不要管算法和数据结构,大多数简单的程序不需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。这时知道算法的名字并了解它们的功能,然后动手去实践。当我们在去...

  • 回答 93

    2个都很好就业,更关键的是要学得到东西

  • 回答 12
    已采纳

    获取Map集合中所有的key可以通过map集合的keySet()方法获取例如:    Map map = new HashMap();    map.put(xx,xx); //存放数据    //.... 省略    Set set = map.keySet();    //可以通过迭代器进行测试    Iterator iter = set.iter...

  • 回答 56
    已采纳

    不同年龄,不同掌握程度,学历,找工作城市,面试能力这是一个多方面影响的结果,如果是平均值的话,全国平均薪资14k左右

  • 回答 38

    具体学多久,根据自己的学习力,自律性、解决问题能力来决定若系统性学习,跟着讲师的节奏走,大概半年左右,有专业的讲师把课程进行规划,尽心系统学习,有问题,讲师会帮忙解决,学习的效率很高,避免了自学中出现各种问题解决不了,而耽误很多时间,可能会...

  • 回答 23
    已采纳

    (1)idea启动时会有两个快捷方式,安装完后默认生成在桌面的是32位的idea的快捷方式,如果我们使用这个快捷方式运行大项目,一般都会很卡。解决方法是找到idea的安装目录,然后进入bin文件夹,找到名称为idea64的应用程序,右键他生成桌面快捷方式。以后每次...

  • BIO与NIO、AIO的区别2020-05-19 15:59
    回答 4
    已采纳

    IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO     在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要...

  • Java方法的命名规则2021-04-06 19:07
    回答 31

    ava是一种区分字母的大小写的语言,所以我们在定义变量名的时候应该注意区分大小写的使用和一些规范,接下来我们简单的来讲讲Java语言中包、类、变量等的命名规范。(一)Package(包)的命名Package的名字应该都是由一个小写单词组成,例如com、xuetang9、compan...

  • 回答 2

    public class Point {    private int x;    private int y;    public int getX() {        return x;    }    public void setX(int x) {        this.x = x;    }    public int getY() {        return y;    } ...

  • 回答 6

    经典版单例模式public class Singleton {        private static Singleton uniqueInstance;//利用一个静态常量来记录singleton类的唯一实例。     private Singleton() {     }     public static  Singleton getInstance()...

  • 回答 3

    哈希表的长度一般是定长的,在存储数据之前我们应该知道我们存储的数据规模是多大,应该尽可能地避免频繁地让哈希表扩容。但是如果设计的太大,那么就会浪费空间,因为我们跟不用不到那么大的空间来存储我们当前的数据规模;如果设计的太小,那么就会很容易发...

  • 回答 14

    1. DOM(Document Object Model)        DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才...

  • 回答 19

    1)作用不同: throw用于程序员自行产生并抛出异常; throws用于声明在该方法内抛出了异常2) 使用的位置不同: throw位于方法体内部,可以作为单独语句使用; throws必须跟在方法参数列表的后面,不能单独使用。3)内容不同: throw抛出一个异常对象,且只能是...

  • 回答 11

    基本执行过程如下:1)程序首先执行可能发生异常的try语句块。2)如果try语句没有出现异常则执行完后跳至finally语句块执行;3)如果try语句出现异常,则中断执行并根据发生的异常类型跳至相应的catch语句块执行处理。4)catch语句块可以有多个,分别捕获不同类型...

  • 回答 20

    100-199 用于指定客户端应相应的某些动作。 200-299 用于表示请求成功。 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。 400-499 用于指出客户端的错误。 400 语义有误,当前请求无法被服务器理解。 401 当前请求需要用户验证...

  • 回答 16

    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译...

没有解决我的问题,去提问