public void eat() {
LogUtils.e(“我是人,我要吃大鱼大肉!”);
}
@Override
public void sleep() {
LogUtils.e(“我是人,每天必须睡够8个小时!”);
}
}
OK,现在类已经写完了。接下来结合以上的代码说一下抽象类的用处:
细心地同学可以看得出,在cat和person这两个类中都含有了sleep和eat这两个方法,但是它们的方法体却不一样。重点就在这里,假设不定义AbstractAnimal 这个抽象类以用来让cat和person去继承的话,虽然也要在cat和person中定义sleep和eat这两个方法,看似代码上没有太多简化。但是这背后却隐藏着一个规范问题:也就是“是不是”的问题。cat和person都“是”AbstractAnimal ,所以就必须继承AbstractAnimal 里面的方法。相当于提供了一个大的体制。就好比人:人活着就必须要遵守国家的法律,而至于你信仰佛,还要遵守“佛法”,你信仰共产党,你还要遵守党章和党纪。那就是你自己的事情了
2、接口
====
接口就是一个规范和抽象类比较相似。它只管做什么,不管怎么做。通俗的讲,借口就是某个事物对外提供的一些功能的声明,其定义和类比较相似,只不过是通过interface关键字来完成
其中重要的几个知识点:
-
1、接口中的所有属性默认为:public static final ****;
-
2、接口中的所有方法默认为:public abstract ****;
-
3、接口不再像类一样用关键字 extends去“继承”,而是用 implements 去“实现”,也就是说类和接口的关系叫做实现,(例如:A类实现了B接口,那么成为A为B接口的实现类。而类与类之间的继承的话,叫做A类继承了B类,其中B类即为A类的父类)。实现接口与类的继承比较相似
具体看一下代码:
public interface Sleep {
public static int A = 1;
public static int B = 2;
void isleep(int i);
}
public interface Eat {
void ieat();
}
public interface Study {
void istudy();
}
public class Cat2 implements Sleep,Eat {
@Override
public void ieat() {
}
@Override
public void isleep(int i) {
}
}
public class Person2 implements Sleep,Eat,Study {
@Override
public void ieat() {
}
@Override
public void isleep(int i) {
}
@Override
public void istudy() {
}
}
以上代码定义了三个接口分别是:Study,Eat,Sleep,以及两个类分别是Cat2和Person2。其中Cat2类实现了两个接口分别是:Eat和Sleep,而Person2实现了三个接口分别是:Study,Eat,Sleep。这是为什么呢?就是因为Cat并不需要学习,而Person2需要学习,所以在Cat2类中没有实现Study这个接口,而在Person2中却是有的。那么显而易见,接口所阐述的是“有没有”的问题,而刚刚所说的抽象类阐述的是“是不是”的问题
所以也就可以列出抽象类和接口的几点区别:
-
1、抽象类描述的是“是不是”的问题,而接口描述的是“有没有”的问题;
-
2、在Java中类的继承是“单继承”,可以“多对一”,但是不允许“一对多”。而一个类却可以同时实现多个接口;
3、Dagger2中关于接口的例子
=================
public interface Provider {
最后
最后这里放上我这段时间复习的资料,这个资料也是偶然一位朋友分享给我的,里面包含了腾讯、字节跳动、阿里、百度2020-2021面试真题解析,并且把每个技术点整理成了视频和PDF(知识脉络 + 诸多细节)。
还有 高级架构技术进阶脑图、高级进阶架构资料 帮助大家学习提升进阶,这里我也免费分享给大家也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
有需要的朋友可以点击:**Android面试资料**免费领取~
一起互勉~
C%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**免费领取~
[外链图片转存中…(img-Z4Emj6Rh-1645107122785)]
[外链图片转存中…(img-4Otd1eUa-1645107122786)]
一起互勉~