专栏首页个人随笔Java 关于接口的那点事儿

Java 关于接口的那点事儿

接口的应用

接口是一种能力 关键字:interface 语法

 public interface MyInterface{
  public void foo();
  //其他方法
 }

 注:接口内,所有方法都没有方法体

  接口的特性:    接口不可以被实例化 常作为类型使用    实现类必须实现接口的所有方法    实现类可以实现多个接口    接口中的变量都是静态常量 Java中的多继承

 生活中的接口:    电脑USB接口 引出:      USB接口本身没有实现任何功能      USB接口规定了数据传输的要求      USB接口可以被多种USB设备实现   可以使用Java接口来实现    编写USB接口--->根据需求设计方法    实现USB接口--->实现所有方法    使用USB接口--->用多态的方式使用

 接口作为一种约定和能力的含义  接口是一种约定和能力  接口实现Java多继承  接口中所有方法都是抽象方法  接口中所有变量都是静态常量

 接口在实际开发中的应用:   使用接口开发: 接口是一种能力       关心实现类有何能力,而不关心实现细节       面向接口的约定而不考虑接口的具体实现

接口的实现:          实现接口的关键字:implements        如需要实现多个接口使用“,”分隔 例:

  implements A,B,C...

使用接口:多态    与继承的使用方法相同

一个人可以具有多项能力 一个类可以实现多个接口

栗子:

/**
 * 
 */
package interfacedemo3;

/**
 * @author xjz
 *拍照
 */
public interface TheakePIctrues {
  void takePictrue();
}
package interfacedemo3;
/**
 * 播放功能
 * @author xjz
 *
 */
public interface PlayWriting {
   void play(String incontent);
}
/**
 * 
 */
package interfacedemo3;

/**
 * @author xjz
 *上网
 */
public interface NetWork {
   void networkConn();
}
package interfacedemo3;
/**
 * 抽象类 手机
 * @author xjz
 *
 */
public abstract class HandSet {
   private String brand;//品牌
   private String type;//类型
   
   public abstract void sendInfo();
   public abstract void info();//描述手机
   public abstract void call();//打电话
 
   
   public HandSet(String brand,String type){
       this.brand=brand;
       this.type=type;
   }
   
    public String getBrand() {
        return brand;
    }
    public void setBrand(String brand) {
        this.brand = brand;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
       
   
}
/**
 * 
 */
package interfacedemo3;

/**
 * @author xjz
 *智能机
 */
public class ApptitudeHandSet extends HandSet implements TheakePIctrues,NetWork {

    public ApptitudeHandSet(String brand, String type) {
        super(brand, type);
        // TODO Auto-generated constructor stub
    }

    @Override
    public void call() {
        System.out.println("智能机打电话");
        
    }

    @Override
    public void info() {
        System.out.println("智能机发信息");
        
    }

    @Override
    public void sendInfo() {
        System.out.println("智能机发信息");
        
    }

    @Override
    public void takePictrue() {
        System.out.println("拍照");
        
    }

    @Override
    public void networkConn() {
        System.out.println("上网");
        
    }

}
package interfacedemo3;
/**
 * 普通手机  放音乐
 * @author xjz
 *
 */
public class CommonHandSet extends HandSet implements PlayWriting{

    public CommonHandSet(String brand,String type){
        super(brand,type);
    }
    @Override
    public void call() {
        System.out.println("打电话");
        
    }

    @Override
    public void info() {
        System.out.println("手机类型为:"+getType()+"手机品牌为;"+getBrand());
        
    }

    @Override
    public void sendInfo() {
        System.out.println("发短信");
        
    }

    @Override
    public void play(String incontent) {
     System.out.println("播放"+incontent+"音乐");
        
    }
   
}
package interfacedemo3;

public class Test2 {

    /**
     * @param 房上的猫
     */
    public static void main(String[] args) {
        HandSet hs=new CommonHandSet("诺基亚","普通机");
        hs.call();
        hs.info();
        
        ApptitudeHandSet znj=new ApptitudeHandSet("三星", "智能机");
        znj.networkConn();
    }

}

总结:    接口有比抽象类更好的特性:  1.可以被多继承  2.设计和实现完全分离  3.更自然的使用多态  4.更容易搭建程序框架  5.更容易更换实现  ...... 

 Java中的接口  属性全都是全局静态常量  方法都是全局抽象方法  无构造方法  一个类可以实现多个接口,非抽象类实现接口时必须实现接口中的全部方法  抽象类利于代码复用,接口利于代码维护

(C) 房上的猫 。 保留所有权利。  https://www.cnblogs.com/lsy131479/

如需转载,请注明出处!!!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C#编写街道管理系统

    项目需求: 一、语言和环境A、实现语言 C#B、环境要求 Visual Studio 2012 二、功能要求 现使用.NET WinForms技术为居委会开发...

    房上的猫
  • 房上的猫:二维数组

    二维数组是数组的数组。 二维数组基础   基本的定义方式有两种形式,如:   int [][] i = new int[2][3];(推荐)   int i...

    房上的猫
  • 那些年我们用Java写过的小游戏 --- 快速击键系统

    训练技能点 面向对象设计的思想 使用类图理解类的关系 类的封装 构造方法的使用 this、static关键字的使用 需求概述 根据输入速率和正确率将玩家分为不同...

    房上的猫
  • [C#1] 11-接口

    接口与继承 CLR规定一个类型只能有一个基类型,这种继承成为单继承; 接口继承是指一个类型继承的是接口中的方法签名,而非方法实现,通常称为实现接口; 接口仅仅是...

    blackheart
  • abp部分接口转换为首字母大写返回

    在对接手机端app接口时,由于手机端需要返回的模型使用首字母大写的形式,abp(asp.net core)接口默认返回的数据是驼峰命名法,就是首字母小写,我们自...

    用户6362579
  • 一个类实现多个接口的同名方法会报错吗?

    大家好,我是小刀,今天和大家讨论一下接口实现的两个问题,众所周知,接口是设计模式的基石,所以了解接口的一些实现对理解设计模式,源码都大有裨益!

    微笑的小小刀
  • 设计模式六大原则(4):接口隔离原则

    定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类...

    Angel_Kitty
  • 10.JAVA-接口、工厂模式、代理模式、详解

    接口属于一个特殊的类,这个类里面只能有抽象方法和全局常量 (该概念在JDK1.8之后被打破,在1.8后接口中还可以定义普通方法和静态方法,在后续章节会详讲)

    张诺谦
  • java之接口

    有时必须从几个类中派生出一个子类,继承它们所有的属性和方法,但是,Java不支持多继承,就有了接口,就可以得到多重继承的效果。

    绝命生
  • 设计模式之适配器模式

    网购支付:(工商支付,建设支付2种)很显然这是两个不同的开发商做的开发,故提供的接口方法不一致,也理所当然。

    用户7657330

扫码关注云+社区

领取腾讯云代金券