Java入门学习笔记——第十二天 接口与实现

1.接口的基础语法

  1. 使用关键字interface声明一个接口。

  2. 接口体中的变量一定是static常量,方法一定是抽象方法,没有实现。它们访问权限是public。

  3. 类实现接口中的方法:使用关键字implements声明该类实现一个或多个接口。

  4. 类在实现接口时不仅要去掉abstract修饰符、给出具体方法体,而且一定要用public来修饰。

  5. 定义接口时,如果关键字interface前面加上public关键字,就称这样的一个接口是一个public接口。public接口可以被任意一个类实现。如果一个接口不加public修饰,就称作是友好接口,友好接口可以被与该接口在同一包中的类实现。

  6. 如果父类实现了某个接口,那么子类也就实现了该接口,不必再特意使用implements声明

  7. 接口也可以被继承,即可以通过关键字extends声明一个接口是另一个接口的子接口。子接口将继承父类接口中的全部方法和常量。

2.接口回调

在Java语言中,接口回调是指:可以把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量,那么该接口就可以调用被类实现的接口方法。

实际上,当接口变量调用被类实现的接口方法时,就是通知相应的对象调用这个方法。

3.理解接口

  1. 接口可以抽象出重要的行为标准,该行为标准用抽象方法来表示。

  2. 可以把实现接口的类的对象的引用赋值给接口变量,该接口变量可以调用被该类实现的接口方法,即体现该类根据接口里的行为标准给出的具体行为。

4.abstract类与接口的比较

  • abstract类和接口都可以有abstract方法。

  • 接口中只可以有常量,不能有变量;而abstract类中既可以有常量,也可以有变量。

  • abstract类中也可以有非abstract方法,接口不可以。

  • 一个类可以实现多个接口,但一个类只能继承一个抽象类。所以使用接口可以间接地实现多重继承。

  • 接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适于日后重新对里面的代码修改。

  • 功能需要积累时用抽象类,不需要积累时用接口

抽象类与接口的比较

https://blog.csdn.net/gongxiao1993/article/details/82055007?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

课后习题

1.问答题

(1)不行

(2)不行

(3)接口的回调是指:将实现该接口方法的类的引用赋值给该接口声明的接口型变量,以后该接口型变量可以直接调用实现该接口方法的类的方法。

(4)不行

(5)可以

2.选择题

(1)D

(2)A、B

(3)A

3.阅读程序

(1)15.0、8

(2)18.15

4.编程题

 
package practice_project;
interface Animal {
	void cry();
	String getAnimalName();
}
class Simulator {
	void playSound(Animal animal) {
		System.out.println(animal.getAnimalName()+"叫");
		animal.cry();
	}
}

class Dog implements Animal{
	public void cry() {
		System.out.println("汪汪汪");
	}
	public String getAnimalName() {
		return "Dog";
	}
}
class Cat implements Animal{
	public void cry() {
		System.out.println("喵喵喵");
	}
	public String getAnimalName() {
		return "Cat";
	}
	
}

public class Test{
	public static void main(String args[]) {
		Simulator simulator = new Simulator();
		Animal animal;
		simulator.playSound(new Dog());
		simulator.playSound(new Cat());
	}
}

原创文章 70 获赞 25 访问量 7135

猜你喜欢

转载自blog.csdn.net/weixin_43727229/article/details/105029511