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 中接口概念 接口可以理解为一种特殊的 类,由 全局常量 和 公共的抽象方法 所组成. 类是一种具体实现体,而接口定义了某一批类所需要遵循的规范,接口不关心这些类的内部数据, 也不关心这些类里 ...
随机推荐
- 27、前端知识点--webpack面试题(二)
webpack面试题总结 本文主要是对webpack面试会常被问到的问题做一些总结,且文章会不断持续更新 1.webpack打包原理 把所有依赖打包成一个 bundle.js 文件,通过代码分割成单元 ...
- 线程池ThreadPoolExecutor实现原理
线程属于稀缺资源,对于线程的创建规则,引用<阿里巴巴 Java 手册>中的一条进行说明. 本篇从源码方面介绍ThreadPoolExecutor对象,并简要解析线程池工作原理. 首先Thr ...
- 了解Greenplum (2)
一.目的 1. 理解Greenplum中的数据分布策略(random 和 distribution),分析不同分布策略的优劣:2. 理解查询执行中的数据广播和数据重分布,分析在何种情况下选择哪种策略, ...
- BZOJ2440/洛谷P4318 [中山市选2011]完全平方数 莫比乌斯函数
题意:找到第k个无平方因子数. 解法:这道题非常巧妙的运用了莫比乌斯函数的性质! 解法参考https://www.cnblogs.com/enzymii/p/8421314.html这位大佬的.这里我 ...
- kafka参数设置
一.broker参数 broker.id:kafka集群的唯一标识. log.dirs:kafka存储消息日志的目录,多个用逗号隔开,需要保证指定的目录有充足的磁盘空间. zookeeper.conn ...
- 解析 Java 反射题中一个有趣的坑
public class Test { public void age(int age) { System.out.println("int age="+age); } publi ...
- CF1090J Two Prefixes
神仙题++ 还是在某校梁大讲的题qaq 我们考虑容斥 也就是本质不同字串=全部-重复的 我们只需要求重复的即可 考虑相同的s=ab 我们用长度最长的a作为代表串 如果存在一个a'b'且|a'|> ...
- 三星GT S7562 PIN 解锁方法
三星GT S7562 PIN 解锁方法 请认真阅读完下文再进行操作,操作基本安全,请保证你手机电池有电续航超过1小时 首先把内存开和电话卡取出(以防万一数据丢失) 关机状态下: 同时按音量上下键 加 ...
- VUE 生成二维码插件
原文:https://www.jianshu.com/p/496fd1cbee8d npm install qrcodejs2 --save 页面中引入 dom 结构 JS 方法编写 export d ...
- [原创] Delphi Win API函数 操作帮助文件 HtmlHelpA函数介绍
Delphi Win API函数 操作帮助文件 HtmlHelpA函数介绍 函数原型:HWND HtmlHelpA( HWND hwndCaller, LPCSTR pszFile, UINT uCo ...