任务描述
本关任务:通过编程实例,掌握接口的定义和使用。
相关知识
概念:类描述对象的属性和方法。接口则包含类要实现的方法。
声明:接口通常以interface来声明。
格式:
public interface 接口名 {}
特性:接口中每一个方法都是抽象的,接口中的方法会被隐式的指定为 public abst\fract
#####接口的实现与继承
接口的实现:
- 当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
- 类使用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*********/
}
}