《Java 核心技术面试》课程笔记(十三)

news/2024/10/29 2:39:39/

谈谈接口和抽象类有什么区别?

典型回答

  • 接口和抽象类是 Java 面向对象设计的两个基础机制。
    • 接口
      • 接口是对行为的抽象,它是抽象方法的集合,利用接口可以达到 API 定义和实现分离的目的。
      • 接口,不能实例化;
      • 不能包含任何非常量成员,任何 field 都是隐含着 public static final 的意义;
      • 同时,没有非静态方法实现,也就是说要么是抽象方法,要么是静态方法。
    • 抽象类
      • 抽象类是不能实例化的类,用 abstract 关键字修饰 class,其目的主要是代码重用。
      • 除了不能实例化,形式上和一般的 Java 类并没有太大区别,可以有一个或者多个抽象方法,也可以没有抽象方法。
      • 抽象类大多用于抽取相关 Java 类的共用方法实现或者是共同成员变量,然后通过继承的方式达到代码复用的目的。
  • Java 类实现 interface 使用 implements 关键词,继承 abstract class 则是使用 extends 关键词。

考点分析

  • 如果面试官稍微深入一些,可以从不同角度全面地考察你对基本机制的理解和掌握。
    • 对于 Java 的基本元素的语法是否理解准确。
      • 能否定义出语法基本正确的接口、抽象类或者相关继承实现,涉及重载(Overload)、重写(Override)更是有各种不同的题目。
      • 在软件设计开发中妥善地使用接口和抽象类。
        • 你至少知道典型应用场景,掌握基础类库重要接口的使用;
        • 掌握设计方法,能够在 review 代码的时候看出明显的不利于未来维护的设计。
    • 掌握 Java 语言特性演进。
      • 现在非常多的框架已经是基于 Java 8,并逐渐支持更新版本,掌握相关语法,理解设计目的是很有必要的。

知识扩展

  • 面向对象设计
    • 封装
      • 封装的目的是隐藏事务内部的实现细节,以便提高安全性和简化编程。
      • 封装提供了合理的边界,避免外部调用者接触到内部的细节。
      • 从另外一个角度看,封装这种隐藏,也提供了简化的界面,避免太多无意义的细节浪费调用者的精力。
    • 继承
      • 继承是代码复用的基础机制,可以看作是非常紧耦合的一种关系,父类代码修改,子类行为也会变动。
      • 在实践中,过度滥用继承,可能会起到反效果。
    • 多态
      • 你可能立即会想到重写(override)和重载(overload)、向上转型。
      • 简单说,重写是父子类中相同名字和参数的方法,不同的实现;
      • 重载则是相同名字的方法,但是不同的参数,本质上这些方法签名是不一样的。
  • 基本的 S.O.L.I.D 设计原则
    • 单一职责(Single Responsibility)
      • 类或者对象最好是只有单一职责,在程序设计中如果
        发现某个类承担着多种义务,可以考虑进行拆分。
    • 开关原则(Open-Close, Open for extension, close for modification)
      • 设计要对扩展开放,对修改关闭。
      • 换句话说,程序设计应保证平滑的扩展性,尽量避免因为新增同类功能而修改已有实现,这样可以少产出些回归(regression)问题。
    • 里氏替换(Liskov Substitution)
      • 这是面向对象的基本要素之⼀,进行继承关系抽象时,
        凡是可以用父类或者基类的地方,都可以用子类替换。
    • 接口分离(Interface Segregation)
      • 我们在进行类和接口设计时,如果在一个接口里定义了太多方法,其子类很可能面临两难,就是只有部分方法对它是有意义的,这就破坏了程序的内聚性。
      • 对于这种情况,可以通过拆分成功能单一的多个接口,将行为进行解耦。
    • 依赖反转(Dependency Inversion)
      • 实体应该依赖于抽象而不是实现。
      • 也就是说高层次模块,不应该依赖于低层次模块,而是应该基于抽象。
      • 实践这一原则是保证产品代码之间适当耦合度的法宝。

http://www.ppmy.cn/news/288534.html

相关文章

关于B85M-V Plus支持AHCI驱动问题

一家小宾馆,搭个小服务器,主板为华硕的B85M-v Plus,考虑资源与效率服务器装Win2003 Server版,其他一切正常,但在提高IO读写性能,打开AHCI后,系统来回重启,用SKYIAR注入不成功&#x…

32.Linux命令行

目录 一、命令。 (1)jdk的下载与更改。 (1.1)删除Linux自带的jdk。 (1.2)删除Linux上自己安装的JDK。(更换jdk版本) 二、访问不了linux中的页面。 (1)关…

限制docker日志

为啥要清理服务器上docker容器的日志? 因为是服务器的磁盘空间资源有限,由于docker容器在启动的时候没有限制,导致运行的docker容器随着时间的推移产生的日志越来越多,最后把服务磁盘资源耗尽,服务器的磁盘满了会导致…

android+平板+输入法,搜狗推首款Android3.0平板电脑输入法

搜狗推首款Android3.0平板电脑输入法 2011年04月12日 12:19作者:厂商投稿编辑:孙莹莹文章出处:泡泡网原创 分享 搜狗率先推出首款完美支持Android 3.0平板专用版中文输入法。继保持在Symbian、Windows Mobile、Android、iPhone等多个不同手机…

酷狗音乐应用在计算机里怎么拖出来,电脑如何使用酷狗音乐剪辑音乐|电脑使用酷狗音乐剪辑音乐的方法...

很多人都在玩短视频,像是抖音,秒拍等软件,一些视频会有音乐和特效,变得非常有个性。所以一些用户想要剪辑音乐,但是不知道怎么操作,其实酷狗音乐就自带有剪辑音乐的功能,这样就不用下载其他专业…

android酷狗缓存目录,酷狗缓存的歌曲在哪个文件夹_酷狗音乐缓存的歌曲在电脑哪个目录-win7之家...

酷狗是一款很流行的音乐播放软件,当我们在听歌曲的时候,默认会缓存到文件夹中,方便下次没有网络的时候可以继续听这首歌,有些用户想要知道酷狗缓存的歌曲在哪个文件夹,我们可以从主界面中进入即可找到,接下…

计算机快捷键弹音乐,电脑怎样用快捷键弹出酷狗音乐播放界面

2018-04-03 电脑没声音 放酷狗音乐 在播放 但没声音 电脑没声音请按以下方案逐条排查应可解决(注意顺序),满意请采纳: ? ? ★第1步:检查右下角小喇叭还在不,音量是否关到最小了或是被选择静音了(静音是一个带斜杠的红色圆圈)&am…

计算机手工大全图片大全集,电脑版画图片大全

数码版画是信息学科拓展到文化艺术领域的一种全新的艺术形式,是由科技和艺术的融合而衍生出来的产物。以下是学习啦小编分享给大家的电脑版画图片,一起来看看吧! 电脑版画图片 【电脑版画图片:1】 【电脑版画图片:2】 【电脑版画图片&#xf…