美文网首页
1,类、对象、三大特性、构造方法

1,类、对象、三大特性、构造方法

作者: 24_yu | 来源:发表于2017-11-03 00:48 被阅读0次

    1、面向对象

    面向过程的操作是以程序及基本功能是实现为主,实现之后就完成了,不考虑修改的可能性;面向对象,更多的是要进行子模块化的设计,每一个模块都需要单独存在,并且可以被重复利用。

    面向对象中有三大特性:

    ●封装:把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

    ⑴保护内部的操作不被破坏,隐藏方法的内部的实现,仅仅提供一个调用的方法给其他人,让其他使用这个类的人不需要关心是如何实现的,只要关心如何调用;⑵封装类的属性,将类属性分成私有和公有属性,私有属性自身调用,公有属性仅提供一个外部调用的方法;⑶封装的作用:减少耦合

    ●继承:在原本的基础之上继续进行扩充,让某个类型的对象获取另一个类型的对象的属性和方法。通过继承创建的新类称为子类或者派生类,被继承的类称为基类或者父类。分为实现继承和接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称,但是子类必须提供实现的能力

    ●多态:同一个行为具有多个不同表现形式或形态的能力;指一个类的实例的相同方法在不同情形有不同表现形式。

    作用:提高程序的复用性;动态创建对象时,可以动态调用子类的方法。??

    多态的表现形式:继承和重写。

    方法的多态,重载:相同函数名,不同的参数列表;(返回值不能作为重载的判断)

    覆写:子类覆写父类相同方法名的函数

    对象的多态:父子类对象的转换,向上转型和向下强制转型

    五大基本原则

    单一职责原则SRP(Single Responsibility Principle)

    是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一天到晚虽然忙忙碌碌的,但效率却高不起来。

    开放封闭原则OCP(Open-Close Principle)

    一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的。比如:一个网络模块,原来只服务服务端功能,而现在要加入客户端功能,那么应当在不用修改服务端功能代码的前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。

    替换原则LSP(The Liskov Substitution Principle)

    子类应当可以替换父类并出现在父类能够出现的任何地方。比如:公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则这公司就不和谐了。

    依赖原则DIP(the Dependency Inversion Principle)

    具体依赖抽象,上层依赖下层。假设B是较A低的模块,但B需要使用到A的功能,这个时候,B不应当直接使用A中的具体类,而应当由B定义一个抽象接口,并由A来实现这个抽象接口,B只使用这个抽象接口,这样就达到了依赖倒置的目的,B也解除了对A的依赖,反过来是A依赖于B定义的抽象接口。通过上层模块难以避免依赖下层模块,假设B也直接依赖A的实现,那么就可能造成循环依赖。一个常见的问题就是编译A模块时需要直接包含到B模块的cpp文件,而编译B时同样要直接包含到A的cpp文件。

    接口分离原则ISP(the Interface Segregation Principle)

    模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来。

    2、类与对象的定义

    一句话:类是对象的模板,对象是类的实例,类只有通过对象才可以使用

    3、引用传递和值传递

    引用传递:同一块堆内存空间,同时被多个栈内存所指向,不同栈可以修改同一块堆内存的内容

    值传递:体现在基本数据类型作为参数进行方法调用时,原始值不受方法内值的修改而修改。

    4、构造方法

    ⑴构造函数如果没有被显示的声明,那么对象在创建时候回调用默认的空参数的构造方法;

    ⑵构造方法的名称必须和类名相同

    ⑶构造方法只会在创建对象的时候被调用一次,调用完成后即出栈,而一般的方法可以在对象创建后被调用多次

    ⑷构造方法中,默认也是有return语句的,任何方法都是由return语句的,只是如果显示的写明,那么在编译后会自动加上

    ⑸构造方法前面如果加上返回值类型,那么它将变成一个普通方法(不推荐这种写法)

    ⑹构造方法可以加上权限修饰符,private,则可以用于单例模式

    ⑺构造函数可以被重载,一个类中可以存在多个不同参数的构造方法,构造方法没有返回值类型,没有具体的返回值

    ⑻构造方法之间可以调用,但是不能相互调用,即方法1和方法2互相调用,会导致内存溢出

    相关文章

      网友评论

          本文标题:1,类、对象、三大特性、构造方法

          本文链接:https://www.haomeiwen.com/subject/dmiapxtx.html