接口复习 (java)

本文介绍了Java接口的基本语法,包括方法默认为public抽象方法、属性的声明方式、接口多继承、类实现接口、接口多态性,以及JDK不同版本对接口特性的变化。
摘要由CSDN通过智能技术生成

接口基本语法要点

1. 接口中的方法默认为 public 的 抽象方法

interface Test {
	//void func1 默认是 public abstract void func1
	//public abstract 写上也可以,不过我建议省略
	void func1();
}

2. 接口中的属性只能是 public final static,并且默认也是public final static

interface Test {
	//int a 默认是 public static final a
	//public static final 写上也可以
	int a = 0;
}

3. 接口与接口间可以多继承

interface U1 {
	void func1();
}

interface U2 {
	void func3();
}

interface U3 extends U1, U2 {
	void func3();
}

这个U3就相当于
interface U3 {
	void func1();
	void func3();
	void func3();
}

4. 一个类可以实现多个接口

interface U1 {
	void func1();
}

interface U2 {
	void func2();
}

class Test implements U1,U2 {
	@Override
	void func1()
	{
		System.out.println("重写func1")
	}
	@Override
	void func2()
	{
		System.out.println("重写func2")
	}
}

5.接口可以实现多态

public class Main {
    public static void main(String[] args) {
        Test1 test1 = new Test1();
        Test2 test2 = new Test2();

        Use u = new Use();
        u.work(test1);
        u.work(test2);

    }
}
public class Test1 implements U1{
    @Override
    public void func() {
        System.out.println("调用 Test1 的 func1");
    }
}

public class Test2 implements U1{
    @Override
    public void func() {
        System.out.println("调用 Test2 的 func1");
    }
}
public interface U1 {
    void func();

}
public class Use {
    public void work(U1 use) {
        use.func();
    }
}

创建一个U1接口,再创建两个Test类,分别实现U1接口,再创建一个Use类用于实现多态,然后在主函数创建好 Test1 和 Test2 对象,还有 Use 的对象。然后调用 Use 中的 work 方法,把 t1 传进去 相当于 U1 use = test1use.func()。可以看到这里 编译类型U1 然后 运行类型test1, 触发 动态绑定机制 执行test1func();然后在把 test2 传进去 相当于 U1 use = test2use.func()。和上面一样的步骤触发动态绑定机制,找的是 test2func()



个人觉得接口要注意的点

1. 普通类实现了接口,必须重写接口中所有的抽象方法,因为这是抽象方法的特点

2. 接口不能实例化

3. 接口的修饰符只能是 public(public interface …) 或者 默认(interface…)



接口版本之间的不同

  • jdk 1.7之前:接口中所有方法都必须是抽象方法 ( 抽象方法没有方法体 )

  • jdk 1.8后:java 8 及之后,接口中运行出现默认方法(要加 defalut)和静态方法 (只能通过该接口名调用)【接口也可以作为工具使用

  • jdk 1.9后::- jdk9 之后允许接口中定义私有的实例方法(给默认方法调用的)和私有的静态方法(为静态方法服务的)



总结

接口 + 多态可以让两个模块松耦合

  • 接口 在 java 中表示一种规范,定义了一组抽象方法,和常量。只能定义抽象方法 (abstract 可以省略)常量(static final 可以省略)

  • 接口中所有的方法和变量都是 public 修饰的

  • 接口和类一样,也是一种引用数据类型 (接口类型 a = null),接口也是生成 xxx.class 文件

  • 接口和接口之间可以多继承

  • 非抽象类实现接口,必须实现接口中所有抽象方法

  • 一个类可以实现多个接口 ( class 类 implements 接口 A, 接口 B )

  • 所有接口也是继承 Object ,因此可以调用 object 的相关方法

  • java 8 及之后,接口中运行出现默认方法(要加 defalut)和静态方法 (只能通过该接口名调用)【接口也可以作为工具使用

  • jdk9 之后允许接口中定义私有的实例方法(给默认方法调用的)和私有的静态方法(为静态方法服务的)

一只大一牛马,水平有限,博客主要用来复习,以上知识有错的话,欢迎评论区鞭打我

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值