Java - 接口 Interface
接口:一种公用的规范标准
只要符合规范标准,大家可以通用
接口定义:
接口是一种引用数据类型,最重要的是其中的抽象方法.(abstract) - 抽象方法对标C++中的虚函数
定义接口的格式:
public interface 接口名称{
//接口内容
}
备注:字节码文件仍然是 .java - > .class
接口中包含的内容:
java7: 1.常量 2.抽象方法
java8: 3.默认方法 4.静态方法
java9: 5.私有方法
Java接口的抽象方法:
/*
* 在任何版本Java中,接口都能定义抽象方法
* 格式:
* public abstract 返回值类型 方法名称(参数);
* */
[code]package demo02; //定义:public interface 名字 public interface MyInterface { //定义了一个抽象方法 public abstract void methodAbd(); //接口中的抽象方法,必须有固定关键字public abstract }
Java接口的使用:
/*
* 格式:
* public class 实现类名称 implements 接口名称{
* //....public ,class他们俩可以适当的省略
* }
* 1.接口不能直接使用,必须有一个实现类,来简洁实现该接口
* 2.接口的实现类,必须覆盖重写(实现)接口中所有的抽象方法
* 具体操作:复制所有抽象方法,去掉abstract 加上花括号
* 3.创建实现类的对象,并进行使用
implements v.使生效,执行 n.工具
* */
[code]package demo02; //定义了一个接口interface public interface MyInterface { //定义了一个抽象方法 public abstract void methodAbd(); //接口中的抽象方法,必须有固定关键字public abstract public void methodAbd1(); abstract void methodAbd2(); void methodAbd3(); } //定义了一个class MyInterfaceImpl类,用于执行接口MyInterface public class MyInterfaceImpl implements MyInterface { public void methodAbd() { System.out.println("第一个方法调用"); } public void methodAbd1() { System.out.println("第二个方法调用"); } public void methodAbd2() { System.out.println("第三个方法调用"); } public void methodAbd3() { System.out.println("第四个方法调用"); } } //主函数中通过具体类 MyInterfaceImpl,创建对象imp1,然后对象调用对应的方法 public class Main_Class { public static void main(String[] args) { //MyInterface inter = new MyInterface();//错误写法 MyInterfaceImpl imp1 = new MyInterfaceImpl(); imp1.methodAbd(); imp1.methodAbd1(); imp1.methodAbd2(); imp1.methodAbd3(); } }
default n / v 默认,违约
从Java8开始,接口允许定义默认方法;
用途:接口中的默认方法,可以解决接口升级问题,默认方法含有方法体
格式:
public default 返回值类型 方法名称(参数){
方法体;
}
升级接口的解释:
比如我一开始定义了一个接口,接口中有一个抽象方法methodAbs,然后我在这个接口的基础上新建了两个类,这两个类都重写(继承的感觉)了接口中所有的抽象方法,并且投入使用。现在我给接口升级,新添加了一个抽象方法methodNew,此时倘若不采取措施,已经投入使用的两个类就会报错,所以我们采用定义接口的默认方法,在不影响已经投入使用类的基础上,增加新的方法
接口的默认方法,可以通过具体类直接调用。(通过继承接口中的默认方法,在类创建的对象中直接调用默认方法)
接口的默认方法也可以被重写,这样只能调用类中重写的方法了
[code]package demo02; public interface MyInterface { //定义了一个抽象方法 public abstract void methodAbd(); //接口中的抽象方法,必须有固定关键字public abstract public void methodAbd1(); abstract void methodAbd2(); void methodAbd3(); //新添加的方法methodNew public default void methodNew() { System.out.println("这是新方法"); } } package demo02; public class MyInterfaceImpl implements MyInterface { public void methodAbd() { System.out.println("第一个方法调用"); } public void methodAbd1() { System.out.println("第二个方法调用"); } public void methodAbd2() { System.out.println("第三个方法调用"); } public void methodAbd3() { System.out.println("第四个方法调用"); } } package demo02; public class MyInterfaceImplB implements MyInterface { public void methodAbd() { System.out.println("第一个方法调用"); } public void methodAbd1() { System.out.println("第二个方法调用"); } public void methodAbd2() { System.out.println("第三个方法调用"); } public void methodAbd3() { System.out.println("第四个方法调用"); } public void methodNew() { System.out.println("我把默认方法在具体类中重写了"); } } package demo02; public class Main_Class { public static void main(String[] args) { //MyInterface inter = new MyInterface();//错误写法 MyInterfaceImpl imp1 = new MyInterfaceImpl(); imp1.methodAbd(); imp1.methodAbd1(); imp1.methodAbd2(); imp1.methodAbd3(); imp1.methodNew(); //注意 :具体实现的类中是没有methodNew()方法的,这里是继承的接口的默认方法 System.out.println("============================="); MyInterfaceImplB imp2 = new MyInterfaceImplB(); imp2.methodNew(); } }
- 点赞
- 收藏
- 分享
- 文章举报
- Java 接口(interface)的用途和好处
- Java中接口(interface)和匿名类
- 【Java 基础篇】【第六课】接口interface
- Java 接口(interface)的用途和好处
- java接口interface知识点实例总结
- java例程练习(接口interface)
- [2014-3-11]JAVA笔记_抽象类(abstract class)、接口(interface)
- JavaSE入门学习20:Java面向对象之接口(interface)(一)
- java之接口interface
- Java的接口(interface)属性和方法的类型
- Java基础概念浅谈(1)——应用层面上interface(接口)和abstract class(抽象类)的区别
- java8学习总结——函数式接口@FunctionalInterface
- Java8新特性--Interface中的default方法(接口默认方法)
- java学习15-面向对象(interface接口)
- java - interface 接口的好处
- java interface接口的传值方法
- [置顶] Java面向对象编程之接口(interface)
- JAVA的abstract修饰符 && 接口interface用法 && 抽象类和interface的差别
- Java:@interface,接口,非接口?
- Java + 面向接口interface代码实现(计算三角形、圆形的面积)