public void lick() {
System.out.println("猫猫都喜欢舔自己");
}
然后有一只叫做甜甜的猫这个类继承了Cat:并且实现了重载:添加了time参数
public class TianTian extends Cat{
public void lick(int time) {
System.out.println("我是甜甜猫我通常每天舔自己"+time+"小时");
}
}
我们在测试类里面想要调用甜甜猫的lick方法:
public class Test {
public static void main(String[] args) {
TianTian tianTian = new TianTian();
tianTian.lick();
}
}
我们要是直接这样写其实并不会调用重载的方法而是会跳过甜甜猫直接去调用Cat里面的link方法,所以输出的是:猫猫都喜欢舔自己,我当时好奇为什么会这样,我们new对象的时候是new的Tiantian呀,后来通过自己的编码尝试发现:
对于重载的方法,怎样区别这些名字相同参数不同的方法就是通过在测试类里面传参!也就是说你要是括号里什么都不写就像这样: tianTian.lick();
那么它对应的lick方法就是重载之前的lick方法而不是重载时候的,具体你想要哪一个重载的方法就需要你填写对应它自己的参数后就可以了,比如: tianTian.lick(5);
这里我们传入了5这个time值,就会输出对应的重载方法啦!
下一个题目:
首先按照要求实现:
然后第一个:类E同时实现接口A和B的时候会优先调用哪一个呢?
这里说一下自己首先判断的方法:IDEA在按下alt+insert的时候选择方法重写:
我们会发现只能调用Bb接口中的方法
第二个方法是自己查看同学得知的,这也打破了我对java接口的认知,接口居然可以写实体方法通过default:然后我网上了解了一下default:
这是一个java8的新特性,可以实现接口中写方法体,我们通过这个方法来测试一下优先级:
第二个情况,类 E 继承 D,同时实现接口 A 和接口 B 时,会调用哪个方法?答案是会调用类D中的方法:
说明类的优先级还是高于接口的
三:第三种情况:类 E 同时实现接口 A、接口 B 和接口 C 时,会调用哪个方法?答案是这个会根据你自己的super决定,也就是接口与接口之间是没有优先关系的:
- 两者都是抽象类,都不能实例化。
- interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。
- interface需要实现,要用implements,而abstract class需要继承,要用extends。
- 一个类可以实现多个interface,但一个类只能继承一个abstract class。
- interface强调特定功能的实现,而abstract class强调所属关系。
- 接口中中的每一个方法都是抽象方法,而且没有方法体只是声明,实现类必须全家实现,但是抽象类的子类可以有选择的去实现



