接口interface

接口interface

接口的引入:
生活中的接口是指某些企业和组织等制定的一种约定或标准(USB)
USB风扇按照电脑产商的USB接口设计生产就可以使得电脑具备风扇散热的功能。
USB鼠标按照电脑产商的USB接口设计生产就可以使得电脑具备鼠标移动的功能。
U盘按照电脑产商的USB接口设计生产就可以使得电脑具备U盘存储的功能。

接口
1.接口是一种标准,是一种规范,是一种约定
2.接口可以扩展功能
3.接口是灵活的,可以即插即拔
4.接口由继承者来实现

接口的概念:
从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和抽象方法的定义,而没有变量和方法的实现。

接口的格式:
格式
public interface 接口名{
//常量
//抽象方法
}

接口的实现类格式:
public 类名 implements 接口{
// 实现接口的方法
//普通方法
}

接口的特点:
1.接口使用interface修饰
2.接口是常量和抽象方法的集合
常量: 默认使用 public static final
方法: 默认使用 public abstract修饰
3.在JDK1.8以后不仅仅只有常量和抽象方法,还有默认方法和静态方法
默认方法用来直接给子类使用,如果子类想重写也可以自行根据需求重写,不会强制重写
静态方法用来直接通过接口名访问
4.接口不能够实例化
5.接口如果想要实例化–利用多态
6.接口的实现类特点:
a.如果一个类想要实现一个接口就必须实现接口中定义的所有抽象方法
b.如果一个类不想实现接口中的抽象方法,那么实现类也升级为接口
7.接口是一种规范
8.接口可以用来扩展功能
9.接口是灵活的
10.接口是由继承者来实现
11.接口/类之间的关系
类和类 单继承 不可以实现
类和接口 不可以继承 多实现
接口和接口 多继承 不可以实现
12.接口和继承的区别?
什么时候使用接口? 什么时候使用继承?
大部分情况下使用接口,因为接口灵活,主要是降低了耦合性,并且接口是一种规范
继承主要体现在代码的抽取以及多态的必要条件

思想:
1.开闭原则
2.高内聚,低耦合
3.面向接口编程

举例1代码如下所示:

public class InterfaceDemo01 {
	public static void main(String[] args) {
//		System.out.println(Inter.num);
		
//		Inter.num = 200;
		
//		Inter.staticMethod();
		
//		Inter inter = new Inter();
		
//		利用多态
		Inter inter = new InterImpl();
	}
}

interface Inter {
//	int num = 100;
	public static final int NUM = 100;
	
	void show();
	
	void method();
	
	// 默认方法
	public default void defaultMethod() {
		System.out.println("Inter.defaultMethod()");
	}
	
	// 静态方法
	public static void staticMethod() {
		System.out.println("Inter.staticMethod()");
	}
}

class InterImpl implements Inter {

	@Override
	public void show() {
		System.out.println("InterImpl.show()");
	}

	@Override
	public void method() {
		System.out.println("InterImpl.method()");
	}
	
}

interface InterSon extends Inter {
	
}

举例2代码如下所示:

public class InterfaceDemo02 {

interface IPerson {
	// 返回值类型  参数列表 方法名  
	void setName(String name);
	String getName();
	void setAge(int age);
	int getAge();
}

class LaoWang implements IPerson{
	
	public String name;
	public int age;
	
	public void sing() {
		System.out.println("唱国歌");
	}
	
	public void dance() {
		System.out.println("跳肚皮舞");
	}

	@Override
	public void setName(String name) {
		this.name = name;
	}

	@Override
	public String getName() {
		return name;
	}

	@Override
	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public int getAge() {
		return age;
	}
}

class XiaoWang extends LaoWang implements ISxt {
	
	@Override
	public void sing() {
		System.out.println("唱 HelloWorld!!!");
	}

	@Override
	public void javase() {
		System.out.println("学会了JavaSE");
	}

	@Override
	public void javaee() {
		System.out.println("学会了JavaEE");
	}

	@Override
	public void andoroid() {
		System.out.println("学会了Android");
	}

	@Override
	public void ps() {
		System.out.println("学会了PS");
	}
	
}

interface ISxt extends IJava, IAndroid, IUI{
}

interface IJava {
	void javase();
	void javaee();
}

interface IAndroid {
	void javase();
	void andoroid();
}

interface IUI {
	void ps();
}

接口和抽象类的区别:

序号比较点抽象类接口
1定义用abstract类修饰用interface修饰
2组成抽象方法、普通方法、构造方法、成员变量、常量抽象方法、静态常量
3使用子类继承(extends)实现类实现(implements)
4关系抽象类可以实现接口接口不能继承抽象类
5对象都是通过对象的多态性来实现的同左
6局限不能多继承、不能实例化可以多继承,不能实例化
7选择建议选择接口、避免单继承同左
8实际模板标准
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值