多态 5-7
1、在接口INet里写了默认方法connection:
//default:默认方法 可以带方法体 jdk1.8后新增
default void connection() {
System.out.println("我是接口中的默认链接");
}
在实现类SmartWatch类里没有重写,
INet net=new SmartWatch();
net.connection();
为什么还能使用net调用到在实现类里没有重写的connection方法?是实现类继承了connection方法,还是调的就是接口里的connection方法?
2、老师,默认方法:
default void connection() {
System.out.println("我是接口中的默认链接");
}
这个默认方法的访问修饰符是public吗?那default算什么?
3、INet.super.***这是一种什么调用方式?能实现什么?
4、INet net=new SmartWatch();
System.out.println(net.TEMP);//接口的引用调用接口里的常量,OK!
但是,为什么同样都是经过static修饰,net.就不能调用接口里的静态方法?
5、接口的static静态方法的作用是什么?感觉没啥用啊
正在回答
同学你好:1、在接口里有default connection默认方法,在实现类里没有去重写,那么实现类会不会隐藏继承这个default connection默认方法?
答:在接口定义的方法的访问修饰符前加上关键字default,那么实现类就无需这个方法的重新实现了,可以直接调用了,这就是JDK8中接口增加的新特性,但是注意接口的实现不是继承,所以这里不能说隐藏继承!
2、老师说default void connection()方法的访问修饰符就是default,但是在实现类去重写connection方法时,为什么一定要是public,而不能是default,要知道重写方法的访问修饰符大于等于原有方法就可以了啊。
答:在JDK8以前,接口中都是只允许有公开的静态常量和抽象方法,而在JDK8后,在接口中添加了新的特性,那就是加上default表示的默认方法和static表示的静态方法,这里加上这两个关键字表示的是在接口中允许写方法体,这里的default和atatic都是表示特殊方法的关键字,而不是访问修饰符!
接口中所有成员的属性都为public static final,也就是说接口中声明的变量都是常量,接口中所有方法的访问属性为public,所以实现接口中的方法必须标识为public!
3、老师对于第三个问题的回答里有问题,你说:这里INet.super.***;中的super可以理解成是指向接口对象的引用。老师啊,接口是没有对象的,接口是不能实例化的,哪里来的指向接口对象的引用?
答: 是这样的,INet.super.*可以调用接口默认方法,INet.super看成一个整体去记就行,不用拆开了分别理解,这其实就是在实现类中调用接口默认方法的一个语法规则!
4、接口里的常量,被实现类所继承了吗?
答:实现类实现接口,需要实现接口中的普通方法,默认获得接口中的常量和默认方法等内容,例如:
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
同学你好,
1、net.connection();这里调用就是接口里的connection();方法!这里使用到的是JDK1.8的一个新特性,接口中使用default的方法可以将方法进行具体实现了,不需要一定使用实现类实现!
2、
default void connection() {
System.out.println("我是接口中的默认链接");
}
这个默认方法的访问修饰符是default,并不是public了!
Java中访问修饰符分为public、default、protect、public,这个方法的修饰符为default不是public,访问修饰符只能存在一个。
3、这里INet.super.***;中的super可以理解成是指向接口对象的引用,也就是INet接口的引用,然后通过“.***”进行调用其他方法。
主要是为了调用接口类的方法。
4、静态接口方法不被实现类或接口继承,静态方法的调用只能通过接口名来调用!这是java所规定的,同学记住即可,不用过多纠结~
5、接口中的静态方法和普通类中的静态方法作用一样,都可以通过类名调用。以前接口是没有静态和默认方法的,JDK8以后的版本中开始引入。具体是否需要接口静态方法,还是要看具体需求,不是必须的。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星