深入理解Java接口

从java接口是什么到为什么,理解java接口,主要解决三个问题

1.java接口是什么
2.java接口为什么
3.java接口怎么用

java接口是什么

接口是方法的抽象,通过接口规定类需要实现那些方法。所以接口是抽象类型(abstract type,not abstract class),而不是抽象类。java如何实现这种抽象类型。接口定义:

public interface ShowTips {
      String hello="hello world";
      void show();
}

关键字 interface,定义Field

java接口为什么

  • 为什么需要接口
  • 为什么是这样实现的
  • 为什么是要使用这样的修饰符

理解java接口是对抽象的认识和应用。很多java接口的 是什么决定了为什么。面向对象编程特征:封装,继承,多态。java使用类的机制实现封装,类与类的继承,但是类不可以多继承,所以使用接口来实现多继承,还有多态。

为什么接口的field是public,static,final的呢?

Every field declaration in the body of an interface is implicitly public, static, and final. It is permitted to redundantly specify any or all of these modifiers for such fields.
因为field给类提供的是常量,常量不可以随意改变,比较安全

为什么接口的方法是public,abstract的呢?

Every method declaration in the body of an interface is implicitly public .
Every method declaration in the body of an interface is implicitly abstract, so its body is always represented by a semicolon, not a block.
这是有接口功能所决定的,既然接口功能要求类实现接口方法,那么接口定义的方法就是抽象,而且public的,public表示公开的。

java接口怎么用

示例代码验证接口
定义接口

public interface ShowTips {
    String hello="hello world";//接口field是public,static,final的
     void show(); //接口方法没有具体实现,只是定义,占个地址
}

定义类实现接口

public class Test6 implements ShowTips {
    static final int a=12;//全局常量,不能在方法中定义静态常量
    
    public static void main(String[] args)  {
        // TODO Auto-generated method stub
        
        Test6 test6=new Test6();  // 不可以 直接使用show()静态方法不可以引用非静态方法,因为非静态方法没有分配内存,无法引用
        test6.show();//new之后分配内存才可以执行方法
        show2();//在静态方法中可以直接调用static方法
    }

    public void show() {  //非静态方法 , 实现接口ShowTips
        // TODO Auto-generated method stub
        System.out.println(hello);//hello是接口的常量,可以直接使用,因为接口的定义属性是public,static,final
       
    }
    public static void show2(){
        System.out.println("this is static "+hello);//静态方法可以访问接口的成员,因为hello位于static
    }

}

你可能感兴趣的:(深入理解Java接口)