龙岗网站建设网站制作,网站制作优化全包,长春做电商网站的公司,深圳企业建网站正如类之间可以继承#xff0c;一个接口也可以继承另一个接口。Java为了避免多重继承带来的基类方法调用冲突的问题#xff0c;Java只允许类的单继承#xff0c;但允许接口的多继承。
1、接口的继承#xff1a;更应该称为扩展。
#xff08;1#xff09;Animal.java一个接口也可以继承另一个接口。Java为了避免多重继承带来的基类方法调用冲突的问题Java只允许类的单继承但允许接口的多继承。
1、接口的继承更应该称为扩展。
1Animal.java定义一个Animal接口
package com.test;public interface Animal {void bark(); //等价于public abstract void bark();void move(); //等价于public abstract void move();
}
2FlyableAnimal.java
package com.test;public interface FlyableAnimal extends Animal{void fly();
}
接口FlyableAnimal继承了接口Animal扩展了Animal接口增加了可飞行的动物应该具备的特征。陆地上的动物类可以实现Animal接口而飞禽可以实现FlyableAnimal接口。
2、接口的多继承
1AnimalToys.java
package com.test;interface Speakable {void say();
}
public interface AnimalToys extends Animal,Speakable{//...
}
例如有一个玩具厂商生产了一种会说话的动物玩具有各种各样的动物。那么我们就可以定义一个动物玩具接口AnimalToys接口让它继承Animal接口从而具备了动物的行为特征。人是可以说话的但是要让动物玩具继承人或者实现人接口不合情理。为此单独定义一个Speakable接口在该接口中声明一个say()方法。根据Java的接口可以多继承上面代码中AnimalToys接口也继承了Speakable接口。
3、接口的实现
类在实现接口时也可以同时实现多个接口。飞行的行为具有通用性并不限于飞禽飞机等例如玩具飞机也可以飞下面定义了一个Flyable接口在该接口中声明fly()方法如下
package com.test;public interface Flyable {void fly();
}
下面代码编写了一个Bird类它是动物又会飞因此可以让Bird类同时实现Animal接口和Flyable这两个接口如下
package com.test;public class Bird implements Animal,Flyable{public void bark() {System.out.println(Bird singing.);}public void move() {System.out.println(Bird jump.);}public void fly() {System.out.println(Bird fly.);}public static void main(String[] args) {Bird bird new Bird();bird.bark();bird.move();bird.fly();}
}
Bird类实现了接口Animal中定义的bark()和move()方法及实现了Flyable接口中定义的fly()方法。
一个知识点
在Java中当一个接口继承另一个接口时通常不需要显式地在子接口中导入import父接口。这是因为在同一个包中接口之间的可见性是默认的也就是说它们可以自动地访问彼此的成员。因此接口A可以直接继承接口B而不需要在接口A中导入接口B。
如果子接口和父接口不在同一个包子类需要导入父接口才能继承extends。