暂无权限

加入尚新途,才有权限看这些视频哦!

点击前往
×
问答
uɐnbɓuɐn⅁ɓuɐ⅄
1楼


微信图片_20251117095328_35_47.png

老师,关于接口的默认方法在子类的重写,红框这个看不懂

这是接口默认方法在子类中调用的特殊语法

在 Java 8 引入默认方法后,可能会出现菱形继承问题(一个类实现多个接口,这些接口有相同签名的默认方法)为了明确指定调用哪个接口的默认方法,Java 设计了这种特殊语法的
LM
2楼

不好意思,记错了,自己解决了


尚新途

okk

LM
3楼

不是说接口之中方法加了dafault,在类中继承接口就不用重写方法了吗,我这照片里面还是要重写


尚新途

你这里重写的是println方法,你的println方法是没有被default修饰的

爱吃的小胖子
4楼
class TestDefaultImpl01 implements TestDefault

这个代码中

TestDefaultImpl01

这个是啥意思呀


尚新途

这个是了类名,证明这个是TsetDefault接口的实现类

月
5楼

老师重写接口的默认方法是要这个样子吗?


继承重写我记得要名字完全一样

image.png

尚新途

是的,这就是重写了默认方法了。你实例化这个实现类然后输出这个默认方法,重写之后是输出你现在截图的这个

Fintik
6楼

为什么new的对象是这个不是TestDefault


5.3.1.png



尚新途

因为接口类型不可以new对象呀

风止意难平
7楼

2.png

怎么会 有错误呢?

尚新途

image.png

这个接口什么报错了呢

尚新途

已解决


尚新途

可乐先生
8楼

在类中构建接口的对象,格式必须时 接口  变量名 = new 类名   这样吗

尚新途

对,这个叫面向接口编程,后面会大量的使用的。

张
9楼

IDEA


老师这都JDK16.0了,为嘛还说版本不够高,还是因为IDEA版本拉低了它的高度。

刚查了下说是IDEA>Project>project language level没设置到位,我刚开始是SDK default,为嘛要这样设置

尚新途

需要匹配对应版本的jdk特性

任仕诚
10楼
class TestA implements A{
    @Override
    public void moren() {
        System.out.println("TestA.moren");
    }
}


为什么我敲 public class TestA implements A{} 会报错,删掉public就好了

尚新途

因为TestA已经存在了,有public修饰的这个类名必须和文件名一样,你使用public修饰,就是这个文件名需要叫TestA,但是这个文件已经存在了,所有会报错

宏刚小神
11楼

老师,我与前面的又绕糊涂了

A a = new Test_A()      //这是父类引用指向子类对象

a.moren();


问,这时候a是属于A的,还是Test_A的,咋运行出来就是重写的方法呢


尚新途

a引用的是new Test_A();注意是对象调用方法哦~

自我检测(5S)