
面试系列<5>——面向对象
发布日期:2021-05-09 03:58:00
浏览次数:20
分类:博客文章
本文共 1345 字,大约阅读时间需要 4 分钟。
面试系列——面向对象思想
一、三大特性
封装
利用抽象数据类型将数据和基于数据的操作封装在一起,使其成为一个不可分割的独立实体。数据被保护在抽象数据类型内部,尽可能地隐藏内部细节,只保留一些对外的接口使其与外部发生联系。
优点:
减少耦合:可以独立地开发、测试、优化、使用、理解和修改
减轻维护的负担:可以更容易被理解,并且在调试的时候可以不影响其他模块。
有效得调节性能:可以通过剖析来确定那些模块影响了系统的性能。
提高软件的可重用性
降低了构建大型系统的风险:即使整个系统不可用,但是这些独立的模块却有可能是可用的。
继承
继承实现了Is-A关系,例如Cat和Animal就是一种IS-A关系,因此Cat可以继承自Animal,从而获得Animal非private的属性和方法。
继承应该遵循里式替换原则,子类对象必须能够替换掉所有父类对象。
Cat可以当做Animal使用,也就是说可以使用Animal引用Cat对象。父类引用指向子类对象称为向上转型。
多态
多态分为编译时多态和运行时多态:
编译时多态主要指方法的重载
运行时多态指程序中定义的对象引用所指向的具体类型在运行期间才确定运行时多态有三个条件:
继承
覆盖(重写)
向上转型
下面代码中,乐器类(Instrument)有两个子类:Wind和Percussion,它们都覆盖了父类的play()方法,并且在main()方法中使用父类Instrment来引用Wind和Percussion对象。在Instrument引用调用play()方法时,会执行实际引用对象所在类的play()方法,而不是Instrument类的方法。
public class Instrument { public void play() { System.out.println("Instument is playing..."); }}
public class Wind extends Instrument { public void play() { System.out.println("Wind is playing..."); }}
public class Percussion extends Instrument { public void play() { System.out.println("Percussion is playing..."); }}
public class Music { public static void main(String[] args) { Listinstruments = new ArrayList<>(); instruments.add(new Wind()); instruments.add(new Percussion()); for(Instrument instrument : instruments) { instrument.play(); } }}
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年03月25日 06时21分12秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
采坑 - 字符串的 "" 与 pd.isnull()
2019-03-06
《你当像鸟飞往你的山》总结
2019-03-06
《我是猫》总结
2019-03-06
《抗糖化书》总结
2019-03-06
apache虚拟主机配置
2019-03-06
mcrypt加密以及解密过程
2019-03-06
go等待N个线程完成操作总结
2019-03-06
Python 之网络式编程
2019-03-06
python去除字符串中的特殊字符(爬虫存储数据时会遇到不能作为文件名的字符串)
2019-03-06
SpringCloud微服务(03):Hystrix组件,实现服务熔断
2019-03-06
网站故障公告1:使用阿里云RDS之后一个让人欲哭无泪的下午
2019-03-06
[网站公告]又拍云API故障造成图片无法上传(已恢复)
2019-03-06
上周热点回顾(6.9-6.15)
2019-03-06
.NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息
2019-03-06
上周热点回顾(5.9-5.15)
2019-03-06
上周热点回顾(1.23-1.29)
2019-03-06
【故障公告】10:30-10:45 左右 docker swarm 集群节点问题引发故障
2019-03-06
Python 简明教程 --- 20,Python 类中的属性与方法
2019-03-06
QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)
2019-03-06