ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java基础 -- 面向对象

2022-06-19 20:35:19  阅读:119  来源: 互联网

标签:Java -- 接口 面向对象 对象 抽象 https 抽象类


Java基础 -- 面向对象

1. 什么是面向对象编程?

面向对象编程(Object Oriented Programming,OOP)是一种思想,即以对象为单位构建软件系统。概括来说:就是“万物皆对象”。

2. 为什么使用面向对象?

一方面,对象实际上是信息世界存在的客体,面向对象编程能够比较方便的对现实世界进行模拟;而且,编程思考过程与人的思考方式类似,方便开发人员开发。
另一方面,从软件质量方面考虑,面向对象编程,软件系统地可重用性,可扩展性以及灵活性都比较好。

3. 面向过程编程与面向对象编程

面向过程编程(Process Oriented Programming,pop)
面向对象编程(Object Oriented Programming,OOP)

  • 程序单位不同:POP程序单位是函数;OOP程序单位是类、对象
  • 解决问题方式不同:POP是将解决问题的过程拆分成一个个方法,通过调用一个个方法解决问题;OOP是将信息世界抽象成类、对象,变量代表属性,方法代表行为,通过对象执行方法解决问题。

4. 面向对象基本特征

面向对象三大基本特征为:封装,继承,多态

  • 封装:隐藏不必要细节,只向用户暴露必要接口;Java中进行封装主要是利用权限修饰符修饰属性或方法,外部对象利用getter,setter方法对内部属性进行访问;这样能够隐藏细节并提高安全性。

  • 继承:某些类是有共同特征的,可以将这些特征提取出来构成一个父类;这样可以减少代码冗余且方便扩展功能。

  • 多态:一种事物的多种状态;Java中的多态指的是对象的多种状态,在不同情况下输出不同结果;Java中允许将子类类型指针赋给父类类型的指针,把不同子类的对象都当做父类看待;这样可以提高可维护性,可扩充性和可复用性。

Java引用变量分为编译时类型和运行时类型,编译时类型由声明该变量是的类型决定,运行时类型由实际给变量赋值的对象决定,如果引用变量的编译时类型和运行时类型不一致就是多态。

面向对象一个重要特征为:抽象

  • 抽象:抽象就是提取本质特征,忽略小细节。Java中的抽象类,抽象方法都是强调类和方法最本质的东西,将诸如方法体的一些细节忽略掉;使用抽象能够提取事物的共性,程序容易扩展,易于维护。

*常见问题:接口和抽象类的异同

  • 接口:接口是对行为的抽象,用interface来声明,是抽象方法的集合。接口包含的是类要实现的方法,类描述对象的属性和方法

  • 抽象类:抽象类是对类的抽象,所有的对象通过类来描述,但是并非所有类都能描述对象(对象=状态+行为),如果一个类没有足够信息描述对象,可以将这样的类设置为抽象类。被astract修饰的类就是抽象类,抽象类中包含一系列相关类的共性,出发点为了继承,因此抽象类不能与private、final、static、native并列修饰抽象方法,abstract也不能与final修饰类。

  • 二者异同

    • 相同点:都不能实例化;只有实现接口/抽象类中的全部方法才能被实例化

    • 区别:设计层面上:抽象类对类抽象,接口对行为抽象;使用层面上:一个类可以实现多个接口,不能继承多个抽象类;字段方面:接口的字段只能是static,final类型,抽象类无限制;成员方面:接口成员只能是public,抽象类可以是public,protected,default

参考资料

https://zhuanlan.zhihu.com/p/94770324
https://www.jianshu.com/p/c4f023d02f0c
https://blog.csdn.net/qq_42080839/article/details/107693096
https://zhuanlan.zhihu.com/p/309877118
https://www.jianshu.com/p/68ddb5484ca2
https://blog.csdn.net/qq_41679818/article/details/90523285
https://blog.csdn.net/Alphr/article/details/105379276

标签:Java,--,接口,面向对象,对象,抽象,https,抽象类
来源: https://www.cnblogs.com/Claire-is-here/p/16391226.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有