02.Java–接口

Java–接口

如果一个抽象类中的所有方法都是抽象的,则可以将这个类定义为Java中的另一种形式——接口。

接口是一个特殊的抽象类,它不能包含普通方法,其内部的所有方法都是抽象方法,它将抽象进行的更为彻底。

jdk8中,对接口进行了重新定义,接口中除了抽象方法外还可以有默认方法(使用default修饰)和静态方法(使用static修饰),并且这两种方法允许有方法体。

在定义接口时,使用interface关键字来声明

接口定义语法:

[修饰符] interface 接口名[extends 父接口1,父接口2...]{//同时可以继承多个父接口,解决类的单继承的限制
    [public] [static] [final] 常量类型 常量名 = 常量值;
    [public] [abstract] 方法返回值类型 方法名([参数列表]);
    [public] default 方法返回值类型 方法名([参数列表]){
        //方法体
    }
    [public] static 方法返回值类型 方法名([参数列表]){
        //方法体
    }
}

静态方法可以通过“接口名.方法名”的形式来调用,而抽象方法和默认方法只能通过接口实现类的实例对象来调用

因此需要定义一个接口的实现类,该类通过implements关键字实现当前接口并且实现接口中的所有抽象方法。

定义接口的实现类语法:

[修饰符] class 类名 [extends 父类名] [implements 接口1,接口2...]{
    
}

示例

interface Animal {
	int ID = 1;// 定义全局常量

	void breathe();// 定义抽象方法breathe
	// 定义一个默认方法

	default void getType(String type) {
		System.out.println("该动物属于:" + type);
	}

	// 定义一个静态方法
	static int getID() {
		return Animal.ID;
	}
}

class Dog implements Animal {
	// 实现breathe方法
	public void breathe() {
		System.out.println("狗在呼吸");
	}
}

public class Example13 {
	public static void main(String[] args) {
		System.out.println(Animal.getID()); // 通过接口名调用类方法
		Dog dog = new Dog(); // 创建Dog类的实例对象
		System.out.println(dog.ID); // 在实现类中获取接口全局常量
		dog.breathe();
		dog.getType("犬科");
	}
}

在这里插入图片描述

升级版

interface Animal {
	int ID = 1;// 定义全局常量

	void breathe();// 定义抽象方法breathe
	// 定义一个默认方法

	default void getType(String type) {
		System.out.println("该动物属于:" + type);
	}

	// 定义一个静态方法
	static int getID() {
		return Animal.ID;
	}
}

//定义了LandAnimal接口,并继承了Animal接口
interface LandAnimal extends Animal {
	void run();// 定义抽象方法run()
}

class Dog implements LandAnimal {
	// 实现breathe方法
	public void breathe() {
		System.out.println("狗在呼吸");
	}

	public void run() {
		System.out.println("狗在陆地上跑");
	}
}

public class Example14 {
	public static void main(String[] args) {
		System.out.println(Animal.getID()); // 通过接口名调用类方法
		Dog dog = new Dog(); // 创建Dog类的实例对象
		System.out.println(dog.ID); // 在实现类中获取接口全局常量
		dog.breathe();
		dog.getType("犬科");
		dog.run();
	}
}

在这里插入图片描述

一个类在继承一个类的同时还可以实现接口,此时,extends关键字必须位于implements关键字之前。

class A extends B implements C{//先继承再实现
    
}

一个类在继承一个类的同时还可以实现接口,此时,extends关键字必须位于implements关键字之前。

class A extends B implements C{//先继承再实现
    
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

#YF#_长沙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值