接口语法

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新版亮点—Analytics Dashboard篇(一)

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

  2. php and mysql 常用api函数

  3. Python 其他操作

    lst = ["太白","太白","太黑","日天","女神","alex",& ...

  4. APP测试重点罗列

    1.安装和卸载 应用是否可以在IOS不同系统版本或android不同系统版本上安装(有的系统版本过低,应用不能适配) 软件安装后是否可以正常运行,安装后的文件夹及文件是否可以写到指定的目录里. 安装过 ...

  5. CODE大全大量Flash网站收藏

    我的博客:CODE大全:www.codedq.net:业余草:www.xttblog.com:爱分享:www.ndislwf.com或ifxvn.com. http://www.wallop.com在 ...

  6. 软考------(抽象类、接口) 策略设计模式(strategy) 应用

    某软件公司现欲开发一款飞机飞行模拟系统,该系统主要模拟不同种类飞机的飞行特征与起飞特征.需要模拟的飞机种类及其特征如表5-1所示. #include <iostream> #include ...

  7. CodeForces - 1098.DIV1.C: Construct a tree(贪心,构造)

    Misha walked through the snowy forest and he was so fascinated by the trees to decide to draw his ow ...

  8. Codeforces Round #462 (Div. 2) B-A Prosperous Lot

    B. A Prosperous Lot time limit per test 1 second memory limit per test 256 megabytes input standard ...

  9. 将基于 .NET Framework 的 WPF 项目迁移到基于 .NET Core 3

    在 Connect(); 2018 大会上,微软发布了 .NET Core 3 Preview,以及基于 .NET Core 3 的 WPF:同时还发布了 Visual Studio 2019 预览版 ...

  10. SharePoint 列表多表联合查询

    在SharePoint平台二次开发中,我们有时需要涉及多表关联查询展示多列表中的不同字段信息:SharePoint和Sql数据表一样,也支持多表联合查询,但是不像Sql语句那样简单,有一定的局限性,需 ...