C01面向对象之类与对象
作者:互联网
笔记整理
笔记内容有:
类与对象
1在代码世界中,一定是先有类,才可以根据这个类的模板来创建对象.
2. 如何定义类呢?
* 类的作用: 用来描述1群具有相同特征和功能的事物.
* 用来类定义这类事物具有哪些特征和功能
* 定义类的位置: 定义在命名空间下面
* 定义类的语法:
* class 类名
* {
*
* }
类中应该写些什么东西?
* 类中写上这类事物具有的共同的特征和行为.
* 将这类事物的共同的特征定义为这个类的成员变量.
* 将这类事物拥有的共同的行为定位这个类的方法.
* 需要注意的是,我们自己定义的类中的 成员变量和方法不要加
Static
3. 类是抽象的,所以类中的变量啊方法啊是不能直接使用的.
* 如果你非要使用. 那么你必须找到这个类中的1个具体存在.
* 然后使用这个具体存在.
如果我们找到了这个类中的1个对象,
* 这个对象拥有什么特征和行为: 类中所有的特征和行为这个对象都拥
有
4. 如何找到类中的1个具体存在呢?
* 如何根据类的模板来创建1个对象呢?
* 语法: 类名 对象名 = new 类名();
* Person p1 = new Person();
* 当CPU执行到这句话的时候,就会根据Person模板创建1个p1对象.
* p1对象中拥有Person类模板中定义的成员变量和方法.
* p1对象中有Eat方法.Walk方法 还有3个成员变量.
** 5. 如何访问对象中的东东?
* 语法: 对象名.方法名();
* 对象名.成员变量=数据 赋值或者取值.
6. 凡是定义在中的东东,我们把他们称之为类的成员.
* 成员变量: 是用来描述这类事物具有的共同的特征. 也叫做字段或者成员字段.
* 方法:是用来描述这类事物具有的共同的行为, 也叫做成员方法.
7. 定义类的时候要注意的一些规范:
* a. 类的命名:
* 类是用来描述1类事物的,那么你就用这个事物的名称来命名就可以了.
* 所以,类的名称应该是1个名词.
总结1下命名规范.
1). 变量 是用来存储1个数据的. 变量的名称一般情况下是名词 首个单词的首字母小写其余单词单词的首字母大写.
2). 方法 是用来表示1个行为的. 方法的名称一般情况下是动词, 每个单词的首字母大写.
3). 类 是用来描述1类事物的, 类的名称一般情况下是1个名词. 要求每1个单词的首字母大写.
b. 类定义在命名空间下.
要求1个类独占1个源文件.
类叫什么名字与这个类所在的源文件没有任何关系,决定类的名字的是class后面的那个单词.
只不过一般情况下 建议大家类的名称和源文件的名称保持一致. 这么做的好处在于方便管理类.
8. 创建类的对象, 也叫做实例化.
* 语法:
* 类名 对象名 = new 类名();
* Person p = new Person();
9. 类本质上是我们自定义的一种数据类型.
9. 对象在内存中的分配.
Person p = new Person();
Person本质上是我们自定义的数据类型.
p是1个变量.
new Person() 实际上是1个表达式. new关键字是1个运算符.
new关键字做的事情
1) 在堆空间中开辟1块合适大小的空间.
2). 在这个空间中根据类的模板来创建对象.new后面是那1个类就是根据那个类的模板
类模板中定义了什么成员 那么就会将这些成员挨个的创建在这个空间之中.
3). 调用这个对象的构造函数.
4). 返回这个对象在堆空间中的引用地址
10. 如何调用对象的成员:
a. 类中的成员是无法直接调用的.必须要创建对象, 这个对象之中就拥有了类中定义的所有的成员.
那么使用这个类的成员就可以了.
b. 调用对象的成员:
对象名.成员;
.的意思. 代表"的"的意思 之 の
11. 类的成员的访问修饰符
a. 在Visual Studio中书写C#代码. 如果点不出来,就是真的没有.
就算你硬写上去,也是会出错的.
b. 访问修饰符
1) 是用来修饰类的成员的.
2) public 公共的 被public修饰的成员可以在任意的地方通过对象名点出来访问.
3) private 私有的.被private修饰的成员只能在本类中通过对象名点出来访问.
4) 无论是public还是private修饰的成员. 他们都可以直接的在本类中访问.
方法也是类的成员,所以也可以有访问修饰符.
如果我们没有为成员写任意的访问修饰符,那么这个成员的访问修饰符是private
*12. 关于对象的字段
a. 对象的字段相当于声明再对象之中的变量.
所以对字段的访问 要么通过赋值符号赋值 要么直接取值.
b. 字段的默认值
1)如果在类中声明字段的时候就为字段赋了1个默认值,那么根据这个类创建的对象的这个字段就有这个默认值了.
2)如果在类中声明字段的时候没有为字段赋值,那么根据这个类创建的对象的字段有默认值.
如果字段的类型是值类型的 那么默认值是0
如果字段的类型是引用类型 那么默认值是null
13. 1个类是可以创建任意个对象的.
同1个类的多个对象之间是毫无关系的. 1个对象的字段的值不影响另外1个对象的字段.
唯一的关系: 他们是根据同1个类的模板创建出来的. 所以他们具有相同的成员. 但是字段的值相互之间不影响.
14. 创建1个类的对象,这个对象之中到底有什么呢?
类模板中定义了哪些成员,那么这个对象之中就有哪些成员,多不得少不得.
类是模板 对象是根据这个模板创建出来. 类模板中有什么 那么对象中就有什么
整理到:
15. 命名空间
命名空间 下可以写类. 类下面可以写方法和成员字段. 方法中又写执行代码.
命名空间是用来管理类的.
在1个命名空间中.去访问另外1个命名空间中的类. 是无法直接访问的.
解决方案 a. 使用类的全名称.
类的名字从最顶层的命名空间一直往下点.
b. 在源代码的顶部,使用using关键字 将类所在的命名引入.
引入以后,这个命名空间中的类就可以再当前C#源文件中直接访问了.
如果是同1个命名空间那么直接访问就可以了,不用那么麻烦了.
命名空间是可以嵌套的.
命名空间的作用:
防止类名冲突.
同1个命名空间下,不允许定义多个名称相同的类.
16. 在1个项目中的类,是不能直接在另外的1个项目中访问.
与命名空间无关.
在1个项目中只能访问本项目中的类.其他项目中的类是无法直接访问的.
* 17. 类是引用类型的.
18. 值类型与引用类型
值类型:
所有的数值类型.
char
bool
枚举
结构
引用类型:
字符串
数组
类.
*
值类型与引用类型的异同:
相同点: 当1个变量作为局部变量的时候.无论是引用类型还是值类型,这个局部变量始终是开辟在栈空间之中的.
* 当1个变量作为成员变量的时候, 无论是引用类型还是值类型 这个成员变量随着对象一起开辟在堆空间中,.
* 因为成员变量是属于对象的 对象在堆中 字段也应该跟着对象一起存储在堆中.
*
* 不同点: 与局部或者是成员变量是没有关系
* 值类型的变量中直接存储真实的值.
* 引用类型的变量之中存储的是对象在堆空间中的地址.
*
*
*
* 19. 当你通过对象名要点出1个成员的时候,如果你发现点不出来.
* a. 这个对象里面真的没有这个成员.
* b. 有这个成员,但是访问权限不够.
*
* 20. 如果在成员方法中直接访问成员变量的值.
* 方法属于哪1个对象,那么访问的成员变量就是那1个对象的成员变量 。
*
标签:变量,访问,对象,成员,面向对象,之类,C01,模板,命名 来源: https://blog.51cto.com/u_15051447/2856284