接口语法

public interface Demolnteface{
public void demo():
//其他方法
//所有方法都是抽象的
}

接口里放:

  • 1.静态常量 (一般全部大写)
  • 2.抽象方法(占大多数)

接口的特性

  • 接口不可以被实例化

  • 实现类必须实现接口的所有方法,否则实现类必须是抽象类

  • 实现类可以实现多个接口,来弥补Java不能多继承

  • 接口中的变量都是静态常量

如何使用接口?

编码实现:

一个类可以实现多个接口,多个接口使用,分隔。


接口是一种规范

体现在接口名称和注释上:

有些接口只有名称

方法的实现方式要通过注释来约定

面向接口编程

  • 程序设计时面向接口的约定而不考虑具体实现

  • example:

    做这项工作需要一个程序员 程序员是一种“能力”,不关心具体是谁 接口中的方法体现软件系统的功能 面向接口编程

    程序设计时:关心实现类有何能力,而不关心实现细节 :面向接口的约定而不考虑接口的具体实现

接口的优点

  • 可以被多继承

  • 设计和实现完全分离

  • 更自然的使用多态

  • 更容易搭建程序框架

  • 更容易更好实现

接口和抽象类的区别

  • 本质区别:class和interface关键字不同。

  • 抽象类是类,接口是规范。

  • 接口可继承接口,并可多继承接口,但类只能单根继承

  • 接口只能做方法声明,抽象类中可以做方法声明,也可以做方法实现

  • 抽象类能够保证实现的层次关系,而接口则是能够更有效地分离行为与实现。




匿名类


Java——接口、匿名类的更多相关文章

  1. Java通过匿名类来实现回调函数

    在C语言中,函数名可以当做函数指针传递给形参从而实现回调 void f1() { printf("f1()\n"); } void f2() { printf("f2() ...

  2. java:使用匿名类直接new接口

    java中的匿名类有一个倍儿神奇的用法,见下面代码示例: package contract; public interface ISay { void sayHello(); } 上面是一个简单的接口 ...

  3. 浅谈Java的匿名类

    在实际的项目中看到一个很奇怪的现象,Java可以直接new一个接口,然后在new里面粗暴的加入实现代码.就像下面这样.那么问题来了,new出来的对象没有实际的类作为载体,这不是很奇怪吗? 思考以下代码 ...

  4. Java之匿名类讲解

    参考https://blog.csdn.net/jiaotuwoaini/article/details/51542059 匿名类,正如名字一样在java中没有名字标识的类,当然了编译后还是会安排一个 ...

  5. java使用匿名类直接new接口

    翻看Vector代码的时候,看到这么一段. /** * Returns an enumeration of the components of this vector. The * returned ...

  6. Java中匿名类的两种实现方式(转)

    使用匿名内部类课使代码更加简洁.紧凑,模块化程度更高.内部类能够访问外部内的一切成员变量和方法,包括私有的,而实现接口或继承类做不到.然而这个不是我说的重点,我说的很简单,就是匿名内部类的两种实现方式 ...

  7. java中匿名类的讲解

    匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象 ...

  8. JAVA接口与类的区别

    抽象类:一个类中有抽象方法,这个类就变成了抽象类.抽象类中class的前面必须有abstract修饰符.抽象类中可以有普通方法,也可以有抽象方法,而抽象方法的个数可以是0个,也可以是多个.子类继承父类 ...

  9. java中匿名类的注意细节

    abstract class Outer{ int num; public Outer(int x){ num = x; } public abstract void show1(); public ...

  10. Java:匿名类,匿名内部类

    本文内容: 内部类 匿名类 首发日期 :2018-03-25 内部类: 在一个类中定义另一个类,这样定义的类称为内部类.[包含内部类的类可以称为内部类的外部类] 如果想要通过一个类来使用另一个类,可以 ...

随机推荐

  1. NIO非阻塞式编程

    /** * NIO非阻塞式编程<p> * 服务端和客户端各自维护一个管理通道的对象,我们称之为selector,该对象能检测一个或多个通道 (channel) 上的事件. * 我们以服务端 ...

  2. 对HTTP请求接口资源下载时间过长的问题分析

    问题描述 我司某产品线有指定业务接口customQuery在线上环境中,与首页一起打开时下载数据的时间明显过长(平均可以达到2s) 注: "与首页一起打开" 的含义是指用户进入WE ...

  3. 【分享】wdcp服务器管理系统常用维护工具

    wdcp (WDlinux Control Panel) 是一套用PHP开发的Linux服务器管理系统,类似国外流行的cpanel,旨在易于使用和管理Linux服务器,可以在线通过网页管理服务器和虚拟 ...

  4. 网络设置-指定ip

    1 克隆centos6.设置网卡 vim /etc/udev/rules.d/70-persistent-net.rules 确定光标所在的位置 d3d删除以下三行,更改NAME为0 vim /etc ...

  5. linux kernel操作GPIO函数

    一.头文件 #include <asm/gpio.h> 二.注册 GPIO int gpio_request(unsigned gpio, const char *label) 功能:申请 ...

  6. Spring框架之jdbc源码完全解析

    Spring框架之jdbc源码完全解析 Spring JDBC抽象框架所带来的价值将在以下几个方面得以体现: 1.指定数据库连接参数 2.打开数据库连接 3.声明SQL语句 4.预编译并执行SQL语句 ...

  7. Java 中泛型的实现原理

    泛型是 Java 开发中常用的技术,了解泛型的几种形式和实现泛型的基本原理,有助于写出更优质的代码.本文总结了 Java 泛型的三种形式以及泛型实现原理. 泛型 泛型的本质是对类型进行参数化,在代码逻 ...

  8. ssh升级以及ssh: symbol lookup error: ssh: undefined symbol: EVP_aes_128_ctr错误处理

    1.解压安装openssl包:(不能卸载openssl,否则会影响系统的ssl加密库文件,除非你可以做两个软连接libcryto和libssl) # tar -zxvf openssl-1.0.1.t ...

  9. 【MySQL 高级】索引优化分析

    MySQL高级 索引优化分析 SQL 的效率问题 出现性能下降,SQL 执行慢,执行时间长,等待时间长等情况,可能的原因有: 查询语句写的不好 索引失效 单值索引:在 user 表中给 name 属性 ...

  10. SpringBoot2.+restful风格请求方式设置以及表单中日期格式设置

    ​ 1).SpringBoot在自动配置很多组件的时候,先看容器中有没有用户自己配置的(@Bean.@Component)如果有就用用户配置的,如果没有,才自动配置:如果有些组件可以有多个(ViewR ...