接口语法

1.接口是一种引用类型,可以等同看作类。修饰符 interface 接口名

2.接口中只能出现常量和抽象方法

3.接口其实是一个特殊的抽象类,特殊在接口是完全抽象的

4.接口中没有构造方法,接口也无法实例化

5.接口和接口之间可以多继承

6.一个类可以实现多个接口,这里的实现等同于继承

7.一个非抽象的类实现接口,需要将接口中所有方法实现/重写/覆盖

#java
package study1; public interface A{
//常量都是public static final,可省略
public static final String sucess = "SUCCESS";
public static final double pi = 3.14;
byte max_value = 127;
//接口中所有的抽象方法都是public abstract,
public abstract void m1();
//接口方法不能有方法体,如 void m22(){};会提示interface abstract methods cannot have body void m2(); interface B{
void m1();
}
interface C{
void m2();
}
interface D{
void m3();
}
interface E extends B,C,D{
void m4();
}
/*
extends只能单继承,implements可以多继承
如果实现的接口有多个方法,必须覆盖接口中的方法。
*/
class MyClass implements B,C{
public void m2(){}
public void m1(){}
}
class MyClass2 implements E{ public void m1(){};
public void m2(){};
public void m3(){};
public void m4(){};
}
}

接口的作用

#java
package date818; /**
* 接口的作用:
* 1。可以使项目分离,所有层都面向接口开发,提高开发效率
* 2。接口是代码和代码之间的耦合度降低。变得可插拔,可以随意切换。
* 3。接口和抽象类都能完成某个功能,优先选择接口,因为接口可以多实现,多继承。并且一个类除了接口之外,还可以继承其他类
*/
public interface CustomerService {
//定义一个推出系统的方法
void logout();
} package date818;
//接口实现类1
public class CustomerServierImpl implements CustomerService {
public void logout(){
System.out.println("成功退出系统");
}
} package date818;
//接口实现类2
public class CustomerServiceImpl2 implements CustomerService{
public void logout(){
System.out.println("hello world");
}
} package date818; public class TestCustomer {
public static void main(String[] args){
//需要执行CustomerServiceImpl和CustomerImpl2接口实现类中的logout方法
//以下程序面向接口调用
CustomerService cs = new CustomerServierImpl();//多态。父类型引用指向子类型对象
//调用
cs.logout();
CustomerService cs2 = new CustomerServiceImpl2();
cs2.logout();
}
}
#java
//定义接口
package date818; public interface Engine {
//所有发动机都可以通过这个接口启动
void start();
}
//定义实现接口的类
package date818; public class Honda implements Engine{
public void start(){
System.out.println("本田启动");
}
}
package date818; public class Ymaha implements Engine{
public void start(){
System.out.println("雅马哈启动");
}
}
//定义生产汽车的类
package date818; public class Car {
//面向接口编程,不能将类实例化
/**
* 引用接口定义一个属性e,相当于
* String name;
* Integer age;
* 类里定义的变量是成员变量;方法里定义的变量是局部变量。
*/
Engine e ;//成员变量e Car(Engine e){
//定义构造方法,把局部变量e赋值给成员变量
this.e=e;
}
//对外提供的测试方法
public void testEngine(){
//成员变量e
e.start();
}
}
//定义测试类
package date818; public class TestCar {
public static void main(String[] args){
//生产引擎
Engine e = new Ymaha();
//根据构造方法传入参数生产汽车
Car c = new Car(e);
//测试引擎
c.testEngine(); c.e = new Honda();//已经定义了一个实例,直接对实例的参数修改即可
c.testEngine();
}
}

雅马哈启动

本田启动

java接口定义和作用的更多相关文章

  1. Java接口定义和实现

    1. 使用interface来定义一个接口.接口定义类似类的定义,分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成.定义接口的基本格式如下: [修饰符] interface 接口名 [ ...

  2. java接口定义的静态方法和默认如何在类实现的时候使用

    在 JDK1.8,允许我们给接口添加两种非抽象的方法实现: 1.默认方法,添加 default 修饰即可: 2.静态方法,使用 static 修饰:示例如下: 这样可以实现接口的增强,那我们在类实现接 ...

  3. java 接口的作用和好处

    1.java 接口的作用 http://blog.csdn.net/hack_bug/article/details/7634737 2.一位Java大牛的回答 很多JAVA初级程序员对于接口存在的意 ...

  4. java接口和抽象类的区别和作用(功能、用途、好处)

    Java接口: 总结了4点关于JAVA中接口存在的意义: 1.重要性:在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋 ...

  5. Java 中的接口有什么作用?以及接口和其实现类的关系?

    Java 中的接口有什么作用? - Ivony的回答 - 知乎 https://www.zhihu.com/question/20111251/answer/16585393 这是一个初学者非常常见的 ...

  6. 菜鸡的Java笔记 第二十四 - java 接口的基本定义

    1.接口的基本定义以及使用形式        2.与接口有关的设计模式的初步认识        3.接口与抽象类的区别                 接口与抽象类相比,接口的使用几率是最高的,所有的 ...

  7. Java 8新特性-2 接口定义增强

    为了解决当原有的接口中方法不足时,向原有的接口中添加新的方法,该接口下的N多实现类也需要重写该方法的问题!Java8引入了接口定义增强概念! Java8 打破了原有的接口的方法定义: 公共的.抽象的  ...

  8. 关于java中接口定义常量和类定义常量的区别

    /** * * @author YZJ * @Description java中定义常量的最佳方法 */ public final class Contants{ /** * @Description ...

  9. 教你在Java接口中定义方法

    基本上所有的Java教程都会告诉我们Java接口的方法都是public.abstract类型的,没有方法体的. 但是在JDK8里面,你是可以突破这个界限的哦. 假设我们现在有一个接口:TimeClie ...

随机推荐

  1. DevExpress v17.2新版亮点——VCL篇(一)

    用户界面套包DevExpress v17.2日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress VCL v17.2 的新功能,快来下载试用新版本! 全新的U ...

  2. tomcat的简单配置与适用默认的web应用

    指定tomcat端口: server.xml: <Connector port="8080" protocol="HTTP/1.1" connection ...

  3. iOS GameCenter 接入

    iOS GameCenter  iTunes Connect 设置 首先,申请一个应用程序,不必提交.目地是为了得到Bundle ID.    然后设置一下工程中Info.plist的Bundle i ...

  4. ubuntu vsftpd

    With a bit of playing around I've managed to come up with a semi solution (not perfect but good enou ...

  5. Eclipse之NDK编译-- Type 'jint' could not be resolved, and JNIEnv, jclass错误解决办法

    最近在研究面部识别美白相关的功能.使用的是opencv,就去研究了.今天正好有空就把安装了ndk,安装完成之后就试图去编译demo程序,hellow-jni c代码,一开始编辑就报错了3个错误信息: ...

  6. HihoCoder - 1794:拼三角形 (状压DP)

    描述 给定 n 根木棍,第 i 根长度为 ai 现在你想用他们拼成尽量多的面积大于 0 的三角形,要求每根木棍只能被用一次,且不能折断 请你求出最多能拼出几个 输入 第一行一个正整数 n 第二行 n ...

  7. 代理模式及Spring AOP (一)

    一.代理模式 在不更改源码的前提下,加入新功能,通常需要用到代理设计模式. 代理设计模式分类: 静态代理 动态代理 jdk动态代理 cglib动态代理 其中spring AOP的底层用的是动态代理.其 ...

  8. 51Nod:1085 背包问题

    1085 背包问题  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2--Wn(Wi为 ...

  9. hot load那点事

    热加载,最初接触的时候是使用create-react-app的时候,创建一个项目出来,修改一点代码,页面自动刷新了,贫道当时就感叹,这是造福开发者的事情. 再后来编写静态页面的时候使用 VS Code ...

  10. Math对象的属性和方法

    Math对象是js提供给我们用于运算的方法的集合.若进行数学逻辑上不允许的运算,返回NaN. 属性:Math.E 返回算数常量e(2.718281828459045) Math.LN2 返回2的自然对 ...