怎样回答什么是面向对象

学习面向对象编程这么久,那么到底什么是面向对象呢?

什么是面向对象:

面向对象是计算机科学里的一种编程思想。它根据现实世界事物的特性,即现实中的事物具有其对应的属性与行为。在计算机中就将现实世界中事物的属性和行为抽象成一个类,这个类中描述就这一类对象的属性与行为,也就是我们所说的类的数据与方法。当我们在计算机中需要执行现实世界中某一对象事物要做的事情时,就可以实例化一个对象,通过对这个对象发布命令,来模拟现实世界中事物的行为操作。也正是因为面向对象有与现实世界事物对应的特性,所以说面向对象编程更符合人类的思维习惯。

面向对象三大特征:

封装
封装就是把现实世界中的一类事物的属性与行为对应到一个类中的过程,当在编程中需要使用这类事物时,就可以实例化对应类的实例,然后通过公用接口对这个对象发布命令,让他自己去完成需要的操作。站在调用者的角度,不需要去关心这个对象是怎样完成,这就大大提高了开发的效率,而且降低了不同模块之间的耦合度。站在类的设计者方面,调用者无法看到对象的数据,这就保证了数据的安全性问题。
这类现实世界的例子很多,比如你用遥控器切换电视频道时,你只用直到按哪个键会有怎样的反应,而不需要去关心这个过程是怎样实现的。
继承
继承就是去继承已有的数据与方法。当两个类有既有同样的数据与方法,又有自己特有的数据与方法时,这时就可以把这两个类相同的数据与方法抽象成一个新的类,让这个两个类去继承抽象出的类。
这样的做法,提高了代码的复用度并且降低了冗余度,相同的数据与实现不用再重复编码。同时也增强了可扩展性,当需要在这一类事物添加新的数据与方法时,只需要去继承已有的类,并添加自己的数据与方法就行。
多态
多态就是执行同样的方法会产生的不同的行为。
多态的3个前提:
1.必须有继承或实现关系
2.子类必须重写父类的方法(实现接口的方法)
3.父类的引用引用了子类对象
父类的引用引用了子类对象时,在编译时期只能决定该引用引用的数据,不能决定其引用的方法。

面向对象7大设计原则:

单一职责原则:类的职责要单一,一个类中应该只描述一组相关的操作,不要把太多的职责放在一个类中
开闭原则:软件对扩展时开放的,对修改是关闭,在设计类时要考虑到在不修改已有类的前提下进行类的功能扩展,当需要扩展新的功能时去继承已有的基类,然后添加自己新的功能需求
里氏替换原则:在软件系统中,任何一个接受父类的地方都可以用子类来替换
依赖倒转原则:要针对接口编程,把功能需求放在接口或者基类中定义,把具体的实现让子类去实现,接口只需要关心需要的业务功能
接口隔离原则:使用多个专门的接口来取代一个统一的接口,在保证单一职责的前提下,一个接口的功能尽可能少。这样可以保证再使用一个接口时,只会用到自己需要的功能
合成复用原则:在系统中尽量多用聚合与组合,而少用继承。复用有两种方式。
继承复用:实现简单,易于扩展。从积累扩展来的实现是静态的,不可能在运行时改变,灵活性较低。
组合/聚合复用:耦合度较低,可以选择性的调用成员的操作。在需要用到另一个类的功能而不需要进行功能扩展时,应该尽可能使用组合/聚合的方式
迪米特法则:两个软件实体的相互引用越少越好,或者说两个类之间不应该直接通信,而是引用一个第三者间接交互。
类的划分上,应当尽量创建松耦合的类,类之间的耦合越低,就越容易复用。一个处在松耦合中的类的修改对其关联类的变动很小

### 回答1: 面向对象编程的缺点包括: 1. 复杂性:面向对象编程通常涉及创建大量的类和对象,这增加了代码的复杂性和理解难度。此外,面向对象编程还需要考虑类之间的继承和组合关系,这也增加了复杂性。 2. 性能问题面向对象编程的某些特性,如继承和动态绑定,可能会对程序的性能产生负面影响。这些特性需要在运行时进行解析,这可能会导致程序运行速度变慢。 3. 设计问题:在面向对象编程中,设计良好的类和对象是至关重要的。如果设计不好,可能会导致代码的可读性和可维护性下降。 4. 大规模应用的困难:面向对象编程对于小型项目可能是很有用的,但对于大型应用程序来说,可能会变得非常困难。在大规模应用中,必须考虑更多的细节和复杂性,这可能会导致代码变得混乱和难以管理。 5. 编写代码量多:面向对象编程需要定义类和对象,这需要编写大量的代码。在某些情况下,这可能会导致代码变得冗长和难以阅读。 ### 回答2: 面向对象编程(Object-Oriented Programming,简称OOP)是一种将数据和操作封装在对象中的编程范式。面向对象编程具有许多优点,但也存在一些缺点。 首先,面向对象编程在项目初期可能需要花费更多的时间和精力进行设计。设计类之间的关系、继承结构和接口需要考虑清楚,这可能会增加开发时间。此外,由于面向对象编程需要更多的抽象概念和技巧,所以对于初学者来说可能更加复杂和难以理解。 其次,面向对象编程可能导致代码的复杂性增加。当系统规模变大时,面向对象编程中的继承和多态特性可能导致类之间的耦合度增加,使得代码难以维护和调试。另外,面向对象编程容易出现过度设计的问题,即过多地使用继承和抽象概念,导致代码不够简洁和直观。 此外,面向对象编程的性能可能不如面向过程编程。面向对象编程在运行时需要进行动态绑定、方法调用等额外的开销,这可能导致运行效率稍低。而面向过程编程更加直接和简单,性能通常更高。 最后,面向对象编程需要更多的内存和处理器资源。每个对象都需要一定的内存空间来存储其属性和方法的信息,而面向过程编程中只需要存储数据和方法即可。此外,面向对象编程中的继承关系和多态特性需要更多的处理器资源来实现。 综上所述,面向对象编程具有一些缺点,包括设计复杂、代码复杂、性能较低和资源消耗较大等。在选择编程范式时,需要根据具体情况,权衡优缺点,选择最适合的编程方式。 ### 回答3: 面向对象编程具有许多优点,但也存在一些缺点。以下是一些常见的面向对象编程的缺点: 1. 复杂性:面向对象编程往往需要设计和实现许多类和对象,这增加了开发的复杂性。对于初学者来说,理解和使用面向对象编程的概念和原则可能需要一定的学习和实践。 2. 性能问题面向对象编程更加注重对象之间的交互和消息传递,这可能导致性能问题。创建和销毁对象、处理消息传递的开销可能会增加程序的执行时间和内存消耗。 3. 学习曲线:面向对象编程可能需要对一些复杂的概念有深入的了解,如继承、多态等。对于一些初学者或非常规的编程需求来说,面向对象编程的学习曲线可能会较陡峭。 4. 代码复用:虽然面向对象编程强调代码的重用,但在实践中,由于继承和多态的设计复杂性,代码的复用性可能受到限制。过度的继承层次和复杂的类结构可能导致代码的复用性变差。 5. 难以维护:面向对象编程的代码往往分散在多个类和对象中,更加注重扩展性和灵活性,这可能增加了代码的复杂性和维护的困难。当一个对象的改变需要修改多个相关的对象时,维护代码变得更加困难。 总的来说,面向对象编程在处理复杂系统、需要模拟现实世界或有大规模开发团队的项目中非常有用。然而,对于一些简单、小规模的项目或对性能要求较高的应用来说,面向对象编程的缺点可能会成为问题。在选择编程范式时,根据具体情况综合考虑各种因素是很重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值