JavaSE——面向对象之接口

论坛 期权论坛 脚本     
匿名技术用户   2020-12-28 14:00   27   0

一、定义

接口是抽象方法和常量值定义的集合。

接口和类是并列的关系。但从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义(JDK1.7及之前)

二、特点

1.接口中的所有成员变量都默认是用public static final修饰的,称之为全局静态常量;

2.接口中所有抽象方法都默认是用public abstract修饰的;

3.接口中没有构造器;

4.接口采用多继承机制。

interface A{
    int ID=1;
    void start();
    void run();
    void stop();
}

三、作用

被实现类实现(面向接口编程)

四、JDK1.8接口新特性

可以定义静态方法和默认方法

public interface Run {
 //接口中的静态方法
 public static void method1() {
  System.out.println("跑");
 }
 //接口中的默认方法
 public default void method2() {
  System.out.println("Run:method2");
 }
 
 public default void method3() {
  System.out.println("Run:method3");
 }
}
public class SuperClass {
 public void method3() {
  System.out.println("SuperClass:method3");
 }
}public class SubClass extends SuperClass implements Run {
 //重写方法3
 public void method3() {
  System.out.println("SubClass:method3");
 }
}
public class Test {
 public static void main(String[] args) {
  //1.接口中定义的静态方法,只能通过接口来调用
  Run.method1();
  SubClass sub=new SubClass();
  //2.通过实现类的对象,可以调用接口中的默认方法
  sub.method2();
  //3.如果子类(或实现类)继承的父类和实现的接口中声明了同名同参的方法,
  //那么子类在没有重写此方法的情况下,默认调用的是父类中的同名同参方法
  sub.method3();
 }
}

注意:

1.若一个接口中定义了一个默认方法,而另外一个接口中也定义了一个同名同参数的方法(不管此方法是否是默认方 法),在实现类同时实现了这两个接口时,会出现:接口冲突
解决办法:实现类必须覆盖接口中同名同参数的方法,来解决冲突。

2.若一个接口中定义了一个默认方法,而父类中也定义了一个同名同参数的非抽象方法,则不会出现冲突问题。因为此时遵守:类优先原则。接口中具有相同名称和参数的默认方法会被忽略。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP