Java面试题八:抽象类和接口的区别(1)

  • 抽象类中的抽象方法必须在子类中被重写。

同学们可能会问到:抽象类不能被“new”,抽象方法必须重写,那么定义它们做什么嘞?

答:抽象类生来就注定它是要被继承的,如果没有任何一个类去继承它的话,那么也就失去了它的意义;抽象方法生来就是要被重写的,而且是必须重写。(只要继承了某个抽象类,就必须去重写此抽象类中含有的抽象方法)

话不多说,看代码:

public abstract class AbstractAnimal {

public abstract void eat();

public abstract void sleep();

}

以上代码是定义了一个叫做AbstractAnimal 的抽象类,其中含有eat()和sleep()两个抽象方法。

定义了一个animal类之后再定义一个cat类:

public class Cat extends AbstractAnimal {

@Override

public void eat() {

LogUtils.e(“我是猫,我吃的是猫粮呀”);

}

@Override

public void sleep() {

LogUtils.e(“我是猫,我比你们人类睡的时间短!”);

}

}

此时,我再来写一个Person类:

public class Person extends AbstractAnimal {

@Override

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() {

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

Android高级架构师

由于篇幅问题,我呢也将自己当前所在技术领域的各项知识点、工具、框架等汇总成一份技术路线图,还有一些架构进阶视频、全套学习PDF文件、面试文档、源码笔记做整理一份资料。

需要的朋友可以**私信【学习】**我分享给你,希望里面的资料可以给你们一个更好的学习参考。

或者直接点击下面链接免费获取

Android学习PDF+架构视频+面试文档+源码笔记

  • 330页PDF Android学习核心笔记(内含上面8大板块)

  • Android学习的系统对应视频

  • Android进阶的系统对应学习资料

  • Android BAT部分大厂面试题(有解析)

好了,以上便是今天的分享,希望为各位朋友后续的学习提供方便。觉得内容不错,也欢迎多多分享给身边的朋友哈。

的系统对应视频**

  • Android进阶的系统对应学习资料

[外链图片转存中…(img-GxgfcuS9-1710842284702)]

  • Android BAT部分大厂面试题(有解析)

[外链图片转存中…(img-N2oMp1rj-1710842284702)]

好了,以上便是今天的分享,希望为各位朋友后续的学习提供方便。觉得内容不错,也欢迎多多分享给身边的朋友哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值