美文网首页
内存。封装OOP与oop的继承

内存。封装OOP与oop的继承

作者: 本来想取long但是有人用了 | 来源:发表于2016-12-06 19:46 被阅读0次

这次的整理还是OOP(毕竟是个难点,重点)

讲到OOP肯定要提内存

虚拟内存总体划分为五大区域,栈区(堆栈),堆区(托管堆),常量,静态(静态为初始化区和静态初始化区),其他区域。

栈区:由计算机虚拟内存自动进行释放管理,栈区的存储方式为先进后出,用于分配值类型,栈由操作系统进行管理,不受GC(垃圾回收机制)管理,当值类型不在其作用域,其所占的内存空间自动释放。栈的执行效率为最高的。

堆区:用于分配小对象实例(<85000),所谓小对象就是小于85000字节的实例对象,GC堆分三代垃圾进行管理,当GC操作时(垃圾回收时),垃圾收集器会对GC进行压缩回收,原理有点类似ios种的autorelease(自动释放池)

大对象堆(large object heap):大对象就是指大小超过85000字节的实例对象,大对象分配在LOh上不受GC管理的,不会被压缩,只有在完全GC回收时才会被回收

ps:栈的分配是高位-->低位进行扩展

堆的分配是低位-->高位进行扩展

值类型参数与引用参数的本质,值参数是对栈种数据进行拷贝,拷贝出来的数据相当于之前数据的副本。

引用类型是对栈中数据地址的引用,当值参数为某对象引用时,可以改变该对象的某些值,但是不能将值变成新对象的地址。

将类封装也是一大重点

封装特性:

为什么要封装?

属性存在的目的:其实就是巍峨保护类的内部结构不被破坏,达到封装性。

属性的语法格式:

访问修饰符public(必须) +对应字段的数据类型+字段名称(首字母必须大写)

{

}

属性本身就是一种特殊的方法,他没有返回值,是因为属性内部提供了可以访问该属性的

ref参数:将值类型引用改变为地址引用

值类型作为参数传递的时候,传递不是本身,而是副本。此时要想修改本身的值,要将值类型变为引用类型传递才可以

string虽然本身是引用类型,但是作为参数传递的时候,默认的是值传递,而不是引用传递。这就需要我们

如果想改变原来的字符串,这个时候就要将值传递改为引用传递,加上ref关键字。

如果你不想改变原来的字符串,就直接传递字符串就好。

object本身为引用类型,他和字符串不一样,默认就为引用类型,也就是传递地址。

数组作为参数进行传递,也是引用传递.

out参数:输出到其实就是保存到一个数值在其中

类使用经常会有部分字段重复这就要用到类的继承

继承:

继承使用条件:当你在设计类的时候,发现有字段重复。

具有相同特征不同行为的可以抽取踹,单独称为一个类,这个类供派生类使用。

简称:基类。

在我们的程序中使用关键符号:表示继承

格式:(:+类)

这个类是指继承的类

继承关系中的特点

1.子类可以继承父类中的共有字段

2.子类可以继承父类中的公开属性

3.子类可以继承父类中的公开方法

4.(继承中)父类不能拥有子类的字段/方法/属性/索引器

5.在c#中不支持多重继承,也就是说一个类只能继承一个类,如果你想支持多继承,那么请使用Iterface

继承关系中的构造函数(重点)

1.在继承关系种,首先会调用父类的构造函数,然后在调用子类的构造函数

2.在继承关系中,子类初始化对象的时候,先调用父类的构造函数,然后再看子类构造函数有没有显式

通知编译器指定调用父类的哪个构造函数,如果没有,那么默认去调用父类的无参数构造函数。

此时如果父类重写了带有参数的构造函数,程序编译不通过,那么解决办法就是给父类添加无参构造函数

或则在子类构造函数中声明指定调用父类的哪个构造函数。

相关文章

  • 内存。封装OOP与oop的继承

    这次的整理还是OOP(毕竟是个难点,重点) 讲到OOP肯定要提内存 虚拟内存总体划分为五大区域,栈区(堆栈),堆区...

  • 学习JS笔记(第八章-OOP上)

    OOP概念## OOP特点:抽象、封装、继承、多态 prototype属性与原型## 创建一个函数Foo时,Foo...

  • Java面试总结

    1.什么是OOP、AOP OOP即面向对象编程OOP三大特征:封装、继承、多态OOP五大原则:单一职责原则 (Si...

  • 对象_原型_木桶布局

    1. OOP 指什么?有哪些特性 OOP指的是面向对象编程 三大特性:封装、继承、多态1.封装封装指的是将方法和属...

  • C++ 考试知识要点

    考试知识要点 OOP = 继承(inheritance)+多态(polymorphism)+封装(encapsul...

  • OOP的完美点缀—AOP之SpringAOP实现原理

    前言 OOP与AOP OOP(Object Oriented Programming,面向对象编程),通过封装、继...

  • OC中自定义初始化 与 方法分类

    面向对象的三大特征, 封装, 继承与多态!面向对象编程OOP(Object Oriented Programmin...

  • 关于oop和aop

    oop oop(Object Oriented Programming)面向对象编程, oop的设计特征:封装, ...

  • 继承

    继承 oop(面向对象的三大特性):继承、封装、多态 单继承 class p:... p = 2...cl...

  • spring的AOP分析

    AOP的引入 AOP 面向切面编程。可以说是面向对象编程(OOP)的完善和补充。OOP引入了封装,继承,多态等概念...

网友评论

      本文标题:内存。封装OOP与oop的继承

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