接口中定义静态方法和默认方法、接口的多继承、面向接口编程

本文介绍了Java8中接口的新特性,包括默认方法和静态方法的定义与使用。默认方法允许接口提供非抽象方法实现,而静态方法则可以直接在接口中定义并调用。此外,接口支持多继承,面向接口编程能够降低模块耦合性,提高系统可扩展性和可维护性。重点强调了抽象方法、默认方法和静态方法的区别,以及接口在多继承中的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接口中定义静态方法和默认方法

Java8之前,接口里的方法要求全部是抽象方法
Java8(含8)之后,以后允许在接口里定义默认方法和类方法

1、默认方法

Java8及上版本允许给接口添加一个非抽象的方法实现,只需要使用default关键字即可,这个特征又叫做默认方法(也称作扩展方法)

默认方法和抽象方法的区别是抽象方法必须要被实现,默认方法不是。作为替代方式,接口可提供默认方法的实现,所有这个接口的实现类都会通过继承来得到这个方法。

package cn.test.Interface;

public interface A {
	
	default void moren(){
		System.out.println("我是接口A中的默认方法");
	}

}
class Test_A implements A{
	public void moren(){
		System.out.println("Test_A");
	}
}

package cn.test.Interface;

public class Test1 {
	public static void main(String[] args) {
		A a = new Test_A();
		a.moren();
	}

}

2、静态方法

Java8以后,我们可以在接口中直接定义静态方法的实现,这个静态方法直接从属于接口(接口也是类,一种特殊的类)可以通过接口名调用。
若子类中定义了相同名字的静态方法,那就是完全不同的方法了,直接属于子类,可以通过子类名直接调用。`

package cn.test.Interface;

public class Test2 {
	public static void main(String[]args){
		X.staticMethod();
		Y.staticMethod();

	}

}
interface X{
	public static void staticMethod(){
		System.out.println("X.staticMethod");
	}
}
class Y implements X{
	public static void staticMethod(){
		System.out.println("Y.staticMethod");
	}
}

3、静态方法和默认方法

本接口的默认方法中可以调用静态方法(反之不行)。

/*
 * 测试静态方法和默认方法
 */
package cn.test.Interface;

public class Test3 {
	public static void main(String[]args){
		M m = new H();
		m.K();
	}

}

interface M{
	public static void W(){        //静态方法
		System.out.println("M.W");
	}
	public default void K(){      //默认方法
		System.out.println("M.K");
	}
}
class H implements M{
	public static void W(){
		System.out.println("M.w");
	}
	
}

接口的多继承:

接口完全支持多继承和类的多继承类似,子接口扩展到某个父接口,降火的父接口中所定义的一切。

/*
 * 接口的多继承
 */
package cn.test.Interface;

public interface B {
	void testb();
}
interface C {
	void testc();
}
interface D extends B,C{ /*接口可以多继承:接口D集成接口B,C*/
	void testd();
}


package cn.test.Interface;

public class Exe implements D{
	public void testb(){
		
	}
	public void testc(){
		
	}
	public void testd(){
		
	}
	
}

面向接口编程:

1》面向接口编程是面向对象变成的一部分
2》接口就是规范,就是项目中最稳定的核心!面向接口编程可以让我们把握住正正和性的东西,使实现复杂多变的需求成为可能
3》通过面向接口编程,而不是面向实现类编程,可以大大降低程序模块之间的耦合性,提高整个系统的可扩展性和可维护性
4》面向接口编程的概念,比接口本身的概念要懂得多。设计阶段相对比较困难,在你未写实现时就要想好接口,接口一遍就乱套了,所以设计要比实现难。`

本节重点:

1、抽象方法是:使用abstract修饰的方法,没有方法体,只有声明定义。是一种“规范”,就是告诉子类必须要给抽象方法提供具体的方法。
2、包含抽象方法的类一定是抽象类。
3、抽象方法可以包含:属性、方法、构造方法。但是,我们不能通过抽象类创建对象。
4、接口定义规范,抽象类又有规范又有实现,普通类定义实现。
5、JDK8以后,接口不只可以定义:常量、抽象方法,还能定义默认方法,静态方法。
6、接口中,默认方法和抽象方法区别在于:抽象方法必须被实现,默认方法不是。作为替代方式,接口可提供默认方法的实现,所以这个接口的实现类都会通过继承得到这个方法
7、接口中,默认方法和静态方法的区别在于:本接口的默认方法中可以调用静态方法(反之不行)
8、JAVA中,类是单继承,接口是多继承。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值