接口之间是可以实现多继承的
每博一文案
听过这样一段话,每一个优秀的人都有一段沉默的时光
那一段时光是付出了很多努力,忍受了很多的孤独和寂寞
不抱怨,不诉苦,只有自己知道,而当日后,说起时,
连自己都能被感动的日子。
人生中会有很多的时刻,只想大哭一场,也许,是在白天喧闹的人群中,
却默然感到前未有的孤独。也许,是在夜深人静一个人的房间里,
忽然心上像被开了一枪,因为在人前总是故作坚强,若无其事的样子,坚强久了。
就背上了盔甲,带上了枷锁,脸上风轻云淡,表面如无其事,背后却偷偷流泪
自我疗伤。
写在脸上的便是沉默,他们不是生来就坚强,
而是习惯了一个人,面对所有一个人,死撑硬抗,余生很长
—————— 一禅心灵庙语
接口之间是可以实现多继承的
- 接口之间可以实现多继承的,
interface D {
}
interface F {
}
interface G extends D,F {
}
public class Blog08 {
public static void main(String[] args) {
}
}
运行结果
- 从运行显示的结果可以看到,接口之间的多继承是没有问题的
- 同样因为接口继承了多个接口,所以当我们 实现该接口 的时候,需要把它所继承的接口中的所有 抽象方法进行重写 ,如果有一个 抽象方法 没有重写到的话,都是会报错的
interface D {
void func1(); // 接口中的抽象方法默认是 public void 的
}
interface F {
void func2(); // 抽象方法
}
interface G extends D,F { // 接口的多继承接口
void func3(); // 抽象方法
}
public class Blog08 implements G {
@Override // 重写 注解,错误提醒,人和编译器都可以理解的注释
public void func2() {
}
@Override
public void func3() {
}
public static void main(String[] args) {
}
}
运行结果
- 我们从运行的结果上看,可以发现,我们少写了一个 func1 的抽象方法,报了如上的错误,
- 这里我们可以使用快捷键 + Ctrl +i ,对抽象方法的重写,补齐 func1 抽象方法的重写
interface D {
void func1(); // 接口中的抽象方法默认是 public void 的
}
interface F {
void func2(); // 抽象方法
}
interface G extends D,F { // 接口的多继承接口
void func3(); // 抽象方法
}
public class Blog08 implements G {
@Override
public void func1() { // 补齐该抽象方法的重写
}
@Override // 重写 注解,错误提醒,人和编译器都可以理解的注释
public void func2() {
}
@Override
public void func3() {
}
public static void main(String[] args) {
}
}
运行结果
我们补齐了,相对应的 抽象方法的重写 ,就没有报错了
接口数组调用接口中的抽象方法
- 只要有关的类 实现了对应的接口 ——> 我们就可以创建 接口数组 —— > 将有关实现该接口的类,作为该 接口数组中的元素 ——> 通过下标访问接口数组中的元素(类),调用 实现接口中的抽象方法;例如:我们这里是:Chinese、English、French 都实现接口Talk ,都重写了,接口中的抽象方法 speak( ) ,既然都实现了同一个接口Talk ,我们就通过该接口创建一个以类的实例为元素的,接口数组 ,——> 再通过这个接口数组的下标,访问各自类中的重写的抽象方法 。
- 具体的代码例子
package Blog0;
interface Talk { // 接口
void speak(); // 抽象方法 默认为 public void
}
class Chinese implements Talk{ // 实现接口 Talk
String language = null;
public Chinese(String language) {
this.language = language;
}
@Override
public void speak() { // 重写接口中 speak()的抽象方法
System.out.println(this.language+": 你好世界");
}
}
class English implements Talk { // 实现接口 Talk
String language = null;
public English(String language) {
this.language = language;
}
@Override
public void speak() { // 重写接口中 speak()的抽象方法
System.out.println(this.language+": Hello World");
}
}
class French implements Talk { // 实现接口 Talk
String language = null;
public French(String language) {
this.language = language;
}
@Override
public void speak() { // 重写接口中 speak() 的抽象方法
System.out.println(this.language+": Bonjour le monde");
}
}
public class Blog09 {
public static void main(String[] args) {
Talk[] talks = new Talk[] { // 创建接口数组,以类的实例作为数组元素
new Chinese("汉语"),
new English("英语"),
new French("法语")
};
for (int i = 0; i < talks.length; i++) {
talks[i].speak();
}
}
}
运行结果
最后:
限于自身水平,其中存在的错误,希望大家给予指教,韩信点兵——多多益善,谢谢大家,后会有期,江湖再见!