Interface-接口的实现与注意事项
package cn.learn.Interface;
public interface MyInterfaceA {
public abstract void methodA();
public abstract void methodAbs();
public default void methodDefault(){
System.out.println("aaa");
}
}
package cn.learn.Interface;
public interface MyInterfaceB {
public abstract void methodB();
public abstract void methodAbs();
public default void methodDefault(){
System.out.println("bbb");
}
}
package cn.learn.Interface;
/*
类与接口的区别
1.类与类之间是单继承的,直接父类只有一个
2.类与接口之间是多实现的,一个类可以实现多个接口
3.接口与接口之间是多继承的,某个接口想要其他接口的多种抽象方法 下面的借口,内含五种方法
1.methodA
2.methodB
3.method
**4.methodAbs 同时来源与借口A与B,只写一个
5.methodDefault() 必须重写
*
注:多继承接口的类中,多父继承的接口方法冲突没关系,但是default方法重复会有问题 */ public interface ExtendsInteface extends MyInterfaceB,MyInterfaceA {
public abstract void method(); @Override
default void methodDefault() { }
} package cn.learn.Interface;
//多继承的接口的实现
//其中methodAbs是不冲突的,因为抽象方法没有方法体 public class ExtendsInterfaceImpl implements ExtendsInteface {
//重写默认方法,java12 不用带default关键字?
@Override
public void methodDefault() { } @Override
public void method() { } @Override
public void methodA() { } @Override
public void methodB() { }
//重写冲突的抽象方法
@Override
public void methodAbs() { }
}
package cn.learn.Interface;
/*
接口注意事项:
1.接口没有静态代码块static{}和构造方法 2.虽然一个类的直接父类是唯一的,但是一个类可以同时实现多个接口
格式:
public class MyInterfaceImpl implements 接口A名称,接口B名称{
//覆盖所有抽象方法
} 3.如果实现类中实现的多个接口中,存在重复的抽象方法,那么只需要覆盖重写
一次即可(如果是多个接口有default方法,必须在此类进行覆盖重写) 4.如果实现类没有实现所有接口的所有抽象方法
实现类必须是抽象类 6.一个子类如果继承直接父类当中的方法,和接口中的默认方法产生冲突,优先用父类方法
格式:
public class 子类名称 extends 父类 implements 接口{
方法体
}
注:这种情况下不必重写接口的default方法,因为优先级低于父类 */
//java中所有的类都直接或者间接的是Object的子类,如下
public class MyinterfaceImpl extends Object implements MyInterfaceA,MyInterfaceB{
//重写两个接口相同的抽象方法
@Override
public void methodAbs() {
System.out.println("重写两个接口相同的抽象方法");
} @Override
public void methodDefault() { } //覆盖重写了接口A与接口B所有的抽象方法
@Override
public void methodA() {
System.out.println("覆盖重写了A方法");
} @Override
public void methodB() {
System.out.println("重写了B方法");
}
}
/*
接口内容总结
1.成员变量其实是有 public static final修饰,即为全局常量
且常量必须赋值,并不可改变
格式要完全大写,用下划线分割单词, 2.接口中最重要的是抽象方法,格式:
public abstract 返回值类型 方法名(参数列表);
注意:实现类必须重写所有所有接口方法,除非是抽象类 3.从java 8开始,接口允许定义默认方法,格式:
public defalut 返回值类型 方法名称(参数列表){
方法体
}
注意:默认方法也可以覆盖重写 4.从java 8开始,接口允许定义静态方法,格式:
public static 返回值类型 方法名称(参数列表){
方法体
}
注意:static应该通过接口名称进行调用,不能通过实现类调用static修饰的方法 5.从java 9开始,接口允许定义私有方法,格式
普通私有方法:
public private 返回值类型 方法名称(参数列表){
方法体
}
静态私有方法:
public private static 返回值类型 方法名称(参数列表){
方法体
}
注意:private的方法只有接口自己能调用,不能被实现类或别人使用 */

Interface-接口的实现与注意事项的更多相关文章
- Java学习:接口(interface)的使用于注意事项
接口 接口就是一种公共的规范标准.只要符合规范标准,就可以大家通用. 接口就是多个类的公共规范.接口是一种引用数据类型,最重要的内容就是其中的:抽象方法. 如何定义一个接口的格式 如何定义一个接口的格 ...
- golang面向对象和interface接口
一. golang面向对象介绍 1.golang也支持面向对象编程,但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言.2.golang没有类(class),golang语言的结合体(struc ...
- as3.0 interface接口使用方法
[转]as3.0 interface接口使用方法 AS在2.0的时候就支持接口了 接口能够让你的程序更具扩展性和灵活性,打个例如 比方你定义了一个方法 代码: public function aMet ...
- interface接口
当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,就是接口 interface. 定义接口使用的关键字不是class,是interface.接口中常见的成员: 这些成员都有 ...
- Golang 入门系列(四)如何理解interface接口
前面讲了很多Go 语言的基础知识,包括go环境的安装,go语言的语法等,感兴趣的朋友,可以先看看之前的文章.https://www.cnblogs.com/zhangweizhong/category ...
- go interface接口
一:接口概要 接口是一种重要的类型,他是一组确定的方法集合. 一个接口变量可以存储任何实现了接口方法的具体值.一个重要的例子就是io.Reader和io.Writer type Reader inte ...
- java interface接口的传值方法
A 类 package interface_test; public class A { private IPresenter ip; public A(IPresenter ip) { this.i ...
- JAVA 构造器, extends[继承], implements[实现], Interface[接口], reflect[反射], clone[克隆], final, static, abstrac
记录一下: 构造器[构造函数]: 在java中如果用户编写类的时候没有提供构造函数,那么编译器会自动提供一个默认构造函数.它会把所有的实例字段设置为默认值:所有的数字变量初始化为0;所有的布尔变量设置 ...
- 011-对象——interface接口说明与使用方式实例
<?php /** interface接口说明与使用方式实例 * * 接口里面的方法全是抽象方法,没有实体的方法.这样的类我们就叫做接口.定义的时候用Interface定义.实现接口时用impl ...
- Java Interface接口
Java 中接口概念 接口可以理解为一种特殊的 类,由 全局常量 和 公共的抽象方法 所组成. 类是一种具体实现体,而接口定义了某一批类所需要遵循的规范,接口不关心这些类的内部数据, 也不关心这些类里 ...
随机推荐
- Neo4j 不区分大小写的模糊查询匹配
问题:当图数据库中存储的节点的名字为英文时,就会遇到大小写不匹配问题. 使用不区分大小写的正则表示式可以解决以上问题. Cpyher的where语法里支持正则表达式 ,其语法为 : =~ &quo ...
- EasyUI之DataGrid分页
第一步创建分页DataGrid <table id="dg"> <thead> <tr> <th data-options="f ...
- Angular.js 使用$http的response得到的phone属性为undefined
这是个坑~ 先说解决方案:把response打印出来找你的属性 记录一下,经验不足,有些东西想当然了,所有错误出现都应该一步步去排查!!!切记想当然的自以为. 源码: js $scope.phone= ...
- JavaScript高级笔记
# 今日内容: 1. JavaScript: 1. ECMAScript: 2. BOM: 3. DOM: 1. 事件 ...
- Python之路-Python中的模块与包
一.模块简介 在实际开发中我们不可能不用到系统的标准模块,或第三方模块. 如果想实现与时间有关的功能,就需要调用系统的time模块.如果想实现与文件和文件夹有关的操作,就需要要用到os模块. 每一个 ...
- 如何在Linux下手动编译安装gcc
如果可以通过apt来安装的话,尽量不要手工编译了,手工编译是最后的选择.用apt安装,只需要输入一条命令: sudo apt-get install gcc 手工编译的话,gcc和其他软件包存在如下的 ...
- Java中最基本的集合接口:初识Collection
Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements). 一些 Collection允许相同的 ...
- dao层方法中的@Param说明
1.采用@Param的方法可有多个参数 public void abc(@Param("userName") String name,@Param("password&q ...
- 程序猿看了要xiao了
一. 程序猿问科比:“你为什么这么成功? ”科比:“你知道洛杉矶凌晨四点是什么样子吗? ”程序猿:“知道,一般那个时候我还在写代码,怎么了?”科比:“额…….” 二. 女神:你能让这个论坛的人都吵起来 ...
- 使用WebAPI流式传输大文件(在IIS上大于2GB)
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...