Educoder–Java抽象类和接口 第2关:防盗门
任务描述 本关任务:通过编程实例,掌握接口的定义和使用。
相关知识 概念:类描述对象的属性和方法。接口则包含类要实现的方法。 声明:接口通常以interface来声明。 格式:
public interface 接口名 {
}
特性:接口中每一个方法都是抽象的,接口中的方法会被隐式的指定为 public abstfract #####接口的实现与继承 接口的实现:
-
当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。 类使用implements关键字实现接口。在类声明中,implements关键字放在类的声明后面。
interface Animal {
public void eat();
public void travel();
}
public class MammalInt implements Animal {
public void eat() {
System.out.println("Mammal eats");
}
public void travel() {
System.out.println("Mammal travels");
}
public static void main(String args[]) {
MammalInt m = new MammalInt();
m.eat();
m.travel();
}
}
输出结果: Mammal eats Mammal travels
接口的继承:
-
一个接口能继承另一个接口,和类之间的继承方式比较相似。 接口的继承使用extends关键字,子接口继承父接口的方法。
编程要求
-
接口Alarm(报警)拥有抽象方法void alarm() 接口Guard(防盗)拥有抽象方法void guard()和防盗年限10年 抽象类Door(门)拥有抽象方法void open()和void close() AlarmGuardDoor(防盗门)类继承了Door类,实现了接口Guard和接口Alarm 在类InterfaceDemo中完成类AlarmGuardDoor的实例化,并分别调用AlarmGuardDoor类中的所有方法查看输出效果(调用方法的顺序:open(),alarm(),guard(),close())。
AlarmGuardDoor类中:
-
open()方法输出“芝麻开门”, alarm()方法输出“刮风下雨收衣服了” guard()方法输出“防盗效果好” close()方法输出“芝麻关门”
*接口Alarm(报警)拥有抽象方法void alarm()
package step2;
interface Alarm{
public void alarm();
}
AlarmGuardDoor(防盗门)类继承了Door类,实现了接口Guard和接口Alarm
package step2;
public class AlarmGuardDoor extends Door implements Guard, Alarm{
public void open()
{
System.out.println("芝麻开门");
}
public void close()
{
System.out.println("芝麻关门");
}
public void alarm()
{
System.out.println("刮风下雨收衣服了");
}
public void guard()
{
System.out.println("防盗效果好");
}
}
抽象类Door(门)拥有抽象方法void open()和void close()
package step2;
public abstract class Door{
public abstract void open();
public abstract void close();
}
接口Guard(防盗)拥有抽象方法void guard()和防盗年限10年
package step2;
interface Guard{
final int GUARD_YEAR = 10;
public void guard();
}
在类InterfaceDemo中完成类AlarmGuardDoor的实例化
package step2;
public class InterfaceDemo {
public static void main(String[] args) {
/*********begin*********/
//类AlarmGuardDoor实例化,并调用AlarmGuardDoor类中的所有方法。调用的顺序:open(),alarm(),guard(),close()
AlarmGuardDoor agd=new AlarmGuardDoor();
agd.open();
agd.alarm();
agd.guard();
agd.close();
/*********end*********/
}
}
