java 接口作用_java接口定义和作用

接口语法

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();

}

}

雅马哈启动

本田启动

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值