java小树的参天成长【接口,超详细哦】

本文详细介绍了接口在Java中的概念、语法和使用,包括接口作为标准、多实现、接口与抽象类的区别以及接口的回调机制。通过实例展示了如何通过接口实现多态,并探讨了接口在类继承和能力扩展中的作用。同时,提到了常量接口和标记接口的应用,如Serializable和Cloneable。
摘要由CSDN通过智能技术生成

注意:本作品前三个代码都是相连的

接口的概念

微观概念:接口是一种能力(接口的实现类具有了某种能力)

1.接口的定义:代表了某种能力。

2.方法的定义:能力的具体要求。

经验:java为单继承,当父类的方法种类无法满足子类的需求时,可以实现接口扩充子类。

接口支持多实现,可为类扩充多种能力。语法:implements 接口名,接口名,接口名....{}


接口的语法:public interface 接口名{

}

1.接口相当于特殊的抽象类,定义方式,组成部分与抽象类类似;

2.接口没有构造方法,不能创建对象,但可以用来定义变量;

3.只能定义公开的静态常量,公开的抽象方法。 


package interface1;

public interface MyInterface1 {
    //公开的静态常量
    public static final String NAME = "接口1";//public static final 可省略,默认会添加
    //公开的抽象方法
    public abstract void method1();//public abstract 可省略,默认会添加
}

接口的使用需要一个实现类

语法:public class 类名 implement 接口名{

}


package interface1;(承接上述代码)

public class Impl implements MyInterface1{//实现类

    @Override
    public void method1() {//类实现接口,必须覆盖接口中的所有方法
        // TODO 自动生成的方法存根
        System.out.println("method");
    }

使用方法(承接上述两个代码)

通过接口调用接口的方法(实际上是实现类的方法,接口中为公开的抽象方法,实现类重写了该方法)

package interface1;

public class TestInterface {//测试类
    public static void main(String[] args) {
        MyInterface1 myinterface1 = new Impl();//看这里,多态的形式,引用类型
        myinterface1.method1();//还有这里
    }
}


接口与抽象类的区别

相同点:

1.可编译成字节码文件。

2.不能创建对象。

3.可以作为引用类型(见上述代码引用类型处)。

4.具备Object类中所定义的方法(也就是说可以通过接口调用Object中的方法)

不同点:

1.接口所有的属性都是公开静态常量,默认使用public static final 修饰。

2.接口所有方法都是公开抽象方法,默认使用public abstract 修饰。

3.接口没有构造方法,静态和动态代码块。


接口的规范

1.任何类在实现接口时,必须实现接口中所有的抽象方法,否者此类为抽象类。

2.实现接口中的抽象方法时,访问修饰符必须是public。

接口引用

同父类一样,接口也可声明为引用,并指向实现类对象。(可以使用接口创建变量,不能创建对象)

注意:

1.仅可调用接口中声明的方法,不可调用实现类中独有的方法(就和多态一样的)

2.可强转回实现类本身类型,进行独有方法调用。

3.【特殊:通过接口可调用Object中公开的方法。】


接口的多态

2e1749e624ae4717b32dc789a9b469f2.jpg

见上图蓝色框代码,多种不同类型的引用指向同一个对象的时候,表示看待对象的视角不同。

1.这里的Dog myDog:将狗当狗看

2.Animal a:将狗当动物看

3.Runnable r:将狗当会跑的东西看

4.Swimmable s:将狗当做会游泳的东西看

不同引用所能看到的对象范围不同,只能调用自身类型所声明的部分。

ba9362e668de4f4c91f0ac42c9c79799.jpg


常见关系:

【类与类】

单继承

extends 父类名称

【类与接口】

多实现

implements  接口名1,接口名2,接口名n

【接口与接口】

多继承

extends 父接口1,父接口2,父接口n


常量接口,标记接口

常量接口将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码的可读性

标记接口中没有包含任意成员,仅仅用作标记

1.Serializable

2.Cloneable


什么是接口

1.宏观概念:接口是一种标准。

9ea382e8ce87425bbe46cd9252c55729.jpg

 接口的回调 

先有接口的使用者,后有接口的实现者。

比如下面代码,电脑是使用者,它的调用者可以是下面的三种物体,也可以不是下面的几种物体。三个usb接口可以对接不同的物体。无论是否对接,三个usb接口都存在(看自己电脑就知道了)

package com.mh.interface_5;
//测试类
public class Test {
	public static void main(String[] args) {
		Computer lenovo = new Computer();
		Usb mouse = new Mouse();//使用接口创建对象
		Usb fan = new Fan();//使用接口创建对象
		Usb jinshidun = new Upan();//使用接口创建对象
		
		lenovo.usb1=mouse;
		lenovo.usb2=fan;
		lenovo.usb3=jinshidun;
		lenovo.run();
	}
}

//接口的使用者 电脑
public class Computer {
	Usb usb1;//usb接口
	Usb usb2;//usb接口
	Usb usb3;//usb接口
	public void run() {
		System.out.println("电脑开始工作");
		if(usb1!=null){
			usb1.service();
		}
		if(usb2!=null){
			usb2.service();
		}
		if(usb3!=null){
			usb3.service();
		}
	}
}


//调用者鼠标
public class Mouse implements Usb{

	@Override
	public void service() {
		System.out.println("鼠标连接成功");
		
	}

}

//调用者风扇
public class Fan implements Usb{

	@Override
	public void service() {
		System.out.println("风扇连接电脑成功");
		
	}

}


//调用者upan
public class Upan implements Usb{

	@Override
	public void service() {
		System.out.println("Upan连接电脑成功开始工作");
		
	}
	
}


//接口Usb
public interface Usb {
	void service();
}

创作不易,请多支持,如有不足,请指出

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小智学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值