zoukankan      html  css  js  c++  java
  • Java 接口

    Java 接口

    定义

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

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

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

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

    接口的定义格式

    [修饰符] interface 接口名 [extends 父接口1、父接口2。。。]

      0到多个常量;

      0到多个抽象方法的定义;

    接口也可以继承接口,而且可以继承多个接口。

    图文讲解

    Telphone是一个抽象类,它里面定义了所属子类必须实现的方法,例如:打电话、发短信等等。

    玩游戏是一个接口,里面定义了子类必须实现的方法,例如:玩游戏。

    可以这么理解,抽象类就是一个不完整的普通类,而接口就是一个不完整的抽象类。

    接口里面定义的方法就相当于各种标准,接口下的所有子类都必须遵守这些标准,乖乖的把这些方法重写一遍。

    实例:

    在这里父类和子类1并没有什么卵用,只是熟悉一下抽象类的写法和继承,主要看下面的接口。

    父类/抽象类:

    public abstract class Telphone { //abstract关键字定义抽象类
        private String name;
        public abstract void call(); //abstract关键字定义抽象方法,抽象方法不写方法体
        public abstract void message();
    
    }

    子类1:

    public class CellPhone extends Telphone {
    
        @Override
        public void call() {//重写父类(抽象类)方法
            // TODO Auto-generated method stub
            System.out.println("通过键盘打电话");
        }
    
        @Override
        public void message() {
            // TODO Auto-generated method stub
            System.out.println("通过键盘发短信");
        }
    
    }

    接口:

    接口命名的时候一般在名字前面加上一个 I 来表示这是一个接口,例如:IPlayGame

    /*
     * 定义接口的时候,系统会自动给代码加上abstract关键字
     * 例如:public abstract interface IPlayGame{}
     * 
     * 定义接口里面的方法时,系统会自动给方法加上abstract关键字
     * 例如:public abstract void playGame();
     * 
     * 定义一个接口里面的常量时系统自动加上final关键词
     * 例如:public final String name = "PSP"; 
     */
    public interface IPlayGame { //定义一个接口
        public String name = "PSP"; //定义常量时要用public限定符,或者默认限定符
        public void playGame();  // 定义接口里面的方法
    }

    子类2:

    SmartPhone 类实现了 IPlayGame 这个接口。这个过程的名字叫做实现,用关键字 implements来实现。

    子类既然实现了接口,就必须实现接口里面定义的方法。

    public class SmartPhone extends Telphone implements IPlayGame{
    
        @Override
        public void call() { //重写父类(抽象类)方法
            // TODO Auto-generated method stub
            System.out.println("智能手机通过语音打电话");
        }
    
        @Override
        public void message() {
            // TODO Auto-generated method stub
            System.out.println("智能手机通过语音发短信");
        }
    
        @Override
        public void playGame() { //实现接口里面的方法
            // TODO Auto-generated method stub
            System.out.println("智能手机可以玩游戏");
        }
    
    }

    子类3:

    这是一个典型的类实现接口的例子,并重写接口里面的方法。

    public class Psp implements IPlayGame {
    
        @Override
        public void playGame() {
            // TODO Auto-generated method stub
            System.out.println("psp可以玩游戏");
        }
    }

    测试类:

    引用类型是接口IPlayGame,实现类型是Psp()、SmartPhone()

    public class Initail {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            IPlayGame t1 = new Psp();
            t1.playGame();
            
            IPlayGame t2 = new SmartPhone();
            t2.playGame();
        }
    }

     运行结果:

    psp可以玩游戏
    智能手机可以玩游戏
  • 相关阅读:
    Android四:sqllite
    Android三-AsyncTask
    Android二-.9.png
    【SQL Server】系统学习之三:逻辑查询处理阶段-六段式
    Android一 流
    【SQL Server】系统学习之二:索引优化
    【SQL Server】系统学习之一:表表达式
    【wp之二 页面布局】
    Asp.net三种事务处理
    vs2008 启动IE浏览器 出现DW20.exe占用大量cpu 服务器iis 异常调试
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9472472.html
Copyright © 2011-2022 走看看