JAVA面向接口 知乎_Java对于接口内容的学习

1.1接口的概念

接口是一种数据类型,使用interface声明。

接口中声明的方法都是抽象方法,需要类对其进行实现。而这个类,我们称为这个接口的实现类。实现类必须实现它所实现的接口中的全部方法。接口也可以继承,与类继承所不同的是。一个接口可以同时继承好几个接口。

public class ImplClassA implements AInterface,BInterface{

@Override

public void showInfoA() {

System.out.println("实现接口中的showInfoA");

}

@Override

public void showInfoB() {

System.out.println("实现接口中的showInfoB");

}

}

一个类可以在继承类的同时继承接口。

public class ImplClass3 extends AbsClass implements AInterface,BInterface{

@Override

public void showInfoA() {

// TODO Auto-generated method stub

}

@Override

public void showInfoB() {

// TODO Auto-generated method stub

}

@Override

public void showInfoC() {

// TODO Auto-generated method stub

}

}

1.2接口是一种功能

我们的一个接口就定义了一个个方法,方法即功能。实现类实现了这些方法即拥有了这个功能。所以,接口可以使我们的实现类的功能更加强大。

package cn.sxt.interface03;

/*** 驾驶接口*/

public interface DriveInterface {

/*** 驾驶的方法*/

public void drive();

}

package cn.sxt.interface03;

public class Student implements DriveInterface{

…public void learn(String cName) {

System.out.println(this.name+"正在学习"+cName);

}

@Override

public void drive() {

System.out.println(this.name+"正在驾驶...");

}

}

package cn.sxt.interface03;

public class Teacher implements DriveInterface{

/// …

@Override

public void drive() {

System.out.println(this.name+"正在学习驾驶技术...");

System.out.println(this.name+"很快学会了飙车...");

}

}

1.3接口中的多态

接口中定义的方法,在每一个不同的实现类中实现的功能有所不同。因而形成了多态。

形如--->接口实现多态: 接口类型 引用 实现类对象

package cn.sxt.interface4;

public class Test01 {

public static void main(String[] args) {

// 同一引用类型USBInterface usbInterface = null;

// 实例不同usbInterface = new USBFan();

// 对同一方法的执行结果不同usbInterface.connect();

usbInterface = new USBMouse();

usbInterface.connect();

usbInterface = new USBDisk();

usbInterface.connect();

}

}

1.4面向接口编程和接口跟抽象类之间的比较

package cn.sxt.interface06;

public class Writer {

// 预留墨盒接口private InkBoxInterface inkBoxInterface;

// 预留纸张接口private PaperInterface paperInterface;

public InkBoxInterface getInkBoxInterface() {

return inkBoxInterface;

}

public void setInkBoxInterface(InkBoxInterface inkBoxInterface) {

this.inkBoxInterface = inkBoxInterface;

}

public PaperInterface getPaperInterface() {

return paperInterface;

}

public void setPaperInterface(PaperInterface paperInterface) {

this.paperInterface = paperInterface;

}

public Writer(InkBoxInterface inkBoxInterface, PaperInterface paperInterface) {

super();

this.inkBoxInterface = inkBoxInterface;

this.paperInterface = paperInterface;

}

public Writer() {

super();

}

public void print(String content) {

System.out.println("打印机正在使用"+this.inkBoxInterface.getColor()+"颜色打印"+this.paperInterface.getSize()+"打印"+content);

}

}

接口表示一种约定(协议),约定(规范)了实现类应该具备(has a)的能力。

理解:

=>实现类必须实现接口中所有的方法,所以接口规范了实现类的行为

=> 接口约定了实现类应该具备的行为。

面向接口编程

所谓面向接口编程,在程序设计时,只关心实现类具备什么能力,而不关心实现类如何实现这个能力。面向接口编程时,面向接口的约定而不考虑接口的具体实现。

也就是说,面向接口编程时,接口的定义方只关心实现类是否具备接口所定义的能力,而实现类如何被的该能力接口定义方一点都不关心。

• 抽象类和接口都是引用数据类型,他们都不能创建对象。

• 他们都可以定义抽象方法,都可以实现多态。但是抽象类可以定义非抽象方法,而接口中定义的都是抽象方法。

• 抽象类和接口都具有传递性。抽象类是单根性(单继承),而接口是多继承。

• 在概念上,都可以重写抽象方法。子类重写抽象类,实现类实现接口

抽象类和子类解决的是模块内的问题(代码重用,重写,多态)而接口解决的是模块间的问题 => 高内聚,低耦合。接口可以用解耦模块。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值