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-接口的实现与注意事项的更多相关文章

  1. Java学习:接口(interface)的使用于注意事项

    接口 接口就是一种公共的规范标准.只要符合规范标准,就可以大家通用. 接口就是多个类的公共规范.接口是一种引用数据类型,最重要的内容就是其中的:抽象方法. 如何定义一个接口的格式 如何定义一个接口的格 ...

  2. golang面向对象和interface接口

    一. golang面向对象介绍 1.golang也支持面向对象编程,但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言.2.golang没有类(class),golang语言的结合体(struc ...

  3. as3.0 interface接口使用方法

    [转]as3.0 interface接口使用方法 AS在2.0的时候就支持接口了 接口能够让你的程序更具扩展性和灵活性,打个例如 比方你定义了一个方法 代码: public function aMet ...

  4. interface接口

    当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,就是接口 interface. 定义接口使用的关键字不是class,是interface.接口中常见的成员: 这些成员都有 ...

  5. Golang 入门系列(四)如何理解interface接口

    前面讲了很多Go 语言的基础知识,包括go环境的安装,go语言的语法等,感兴趣的朋友,可以先看看之前的文章.https://www.cnblogs.com/zhangweizhong/category ...

  6. go interface接口

    一:接口概要 接口是一种重要的类型,他是一组确定的方法集合. 一个接口变量可以存储任何实现了接口方法的具体值.一个重要的例子就是io.Reader和io.Writer type Reader inte ...

  7. java interface接口的传值方法

    A 类 package interface_test; public class A { private IPresenter ip; public A(IPresenter ip) { this.i ...

  8. JAVA 构造器, extends[继承], implements[实现], Interface[接口], reflect[反射], clone[克隆], final, static, abstrac

    记录一下: 构造器[构造函数]: 在java中如果用户编写类的时候没有提供构造函数,那么编译器会自动提供一个默认构造函数.它会把所有的实例字段设置为默认值:所有的数字变量初始化为0;所有的布尔变量设置 ...

  9. 011-对象——interface接口说明与使用方式实例

    <?php /** interface接口说明与使用方式实例 * * 接口里面的方法全是抽象方法,没有实体的方法.这样的类我们就叫做接口.定义的时候用Interface定义.实现接口时用impl ...

  10. Java Interface接口

    Java 中接口概念 接口可以理解为一种特殊的 类,由 全局常量 和 公共的抽象方法 所组成. 类是一种具体实现体,而接口定义了某一批类所需要遵循的规范,接口不关心这些类的内部数据, 也不关心这些类里 ...

随机推荐

  1. C#开发 WinForm如何在选项卡中集成加载多个窗体 实现窗体复用

    http://blog.csdn.net/upi2u/article/details/37914909 最近需要做的一个项目,为了避免从菜单中选择的麻烦,需要把几个窗体集成到一起,通过TabContr ...

  2. WinForm的RadioButton使用小技巧

    http://www.cnblogs.com/sjrhero/articles/1883155.html 当多个RadioButton同在一个容器里面的时候,多半的操作都是要得到其中一个的值这个时候我 ...

  3. java定时任务详解

    首先,要创建你自己想要定时的实体类 @Service("smsService")@Transactionalpublic class SmsSendUtil { @Autowire ...

  4. Python2视频教程

    目录 1. 说明 1.1. 马哥视频_修复v1 1.2. 马哥视频_修复v2 2. 目录 3. 下载链接 1. 说明 Python从入门到精通视频(全60集)马哥教育视频(已修复部分视频无声音的问题+ ...

  5. linux NFS 客户端的安装

    1. 安装 showmount [root@allentuns ~]# yum -y install showmount 2. 查看服务器共享 [root@allentuns ~]# showmoun ...

  6. linux安装 inotify

    [root@rsync-client-inotify ~]# yum install make gcc gcc-c++ [root@rsync-client-inotify ~]# wget http ...

  7. Python not and or

    刷题时候,有道题目的答案是 return(num and (num % 9 or 9)) 看的有点懵逼,看来解释如下: 1.首先,’and’.’or’.’not’的优先级是not>and> ...

  8. 【vue】vue不足 待补强

    83719279 9:56:03尤其是路由 声明周期 父子通信 组件通信 以及钩子函数83719279 9:56:17这些我都不敢用,只能用最原始的方法83719279 9:56:32还有es6 js ...

  9. 去掉Tomcat网站地址栏的小猫图标

    当我们打开CSDN等网站时,在地址栏前面就会出现红色的C状图标,如果在桌面新建此链接的快捷方式,则桌面图标也自动变为该地址栏ICO图标.在基于TOMCAT的BS应用或网站开发时,默认的图标为黄色的小猫 ...

  10. django之请求和响应

    一:请求 1. 浏览器向服务器传参的几种方式: 方式一:通过正则的形式进行传递,名字为未命名模式 路由的正则形式: from django.conf.urls import url from . im ...