C#基础(11)——面向过程、面向对象、类中方法
来源:互联网 发布:java 字符串相等 编辑:程序博客网 时间:2024/06/05 22:21
1、面向过程
面向的是过程,强调的是完成这件事的动作,比如把大象塞进冰箱里:打开冰箱——把大象塞进去——关闭冰箱门
2、面向对象
采用被动语态,如:
- 冰箱可以被打开;
- 大象可以被塞进去;
- 冰箱可以被关上;
调用一种方法,就可以完成一件事,不需要了解具体的过程。
3、类
类是一个模子,确定了对象的特征(属性)和行为(方法)。类是不占内存的,而对象是占内存的。像系统自有的string也是一个类,只不过我们这里是自定义的一个类。
[public] class 类名{ 字段;//像struct存储字段 属性; 方法;}
添加类的方法有两种,右击解决方案,可以选择新建项或者添加类,当夸项目调用时,必须加public。
4、类中方法有无static区别
写好一个类,需要创建类的对象,创建过程称为对象实例化,用new,使用static是一种静态方法,不使用是非静态方法。在非静态类中,既可以有静态成员,也可以有非静态成员(实例成员,如字段、方法、属性)。调用非静态方法时需要实例化new一个对象,而使用静态方法时,需要[类名].[方法名]。
静态属性:
总结:
1、静态函数中只能访问静态成员,不能访问实例成员。
2、实例方法中既可以使用静态成员,也可以使用实例成员。
3、静态类不能实例化。
4、如果你要你的类当做“工具类”,即经常使用,不想要实例化,则使用静态类
5、静态类在整个项目中,资源共享,占内存的(静态存储区域),所以静态类越少越好。
6、人为划分的五大区域:堆、栈、静态存储区域、
7、不需要手动释放资源,比如C++里的.close,因为C#有GC(Garbage Collection),只有在程序全部结束时,就会释放资源。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ChuangzhiConsel{ class Program { static void Main(string[] args) { //创建对象 Person Tim = new Person(); Tim._name = "Tim"; Tim._gender = '男'; Tim._age = 25; Console.ReadKey(); } }}
Person类中使用static会出错:
Person类中不使用static:
this关键字
this表示当前类中的对象,输出的就是当前的。如果不加会出问题:因为要区分属性和局部变量。
查看这里
调用方法时,以前通过类名进行调用,现在只需要通过对象名:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ChuangzhiConsel{ class Program { static void Main(string[] args) { //创建对象 Person Tim = new Person(); Tim._name = "Tim"; Tim._gender = '男'; Tim._age = 25; Tim.PrintInformation(); Console.ReadKey(); } }}
5、类中的属性
限定非法值,保护字段,对字段的赋值和取值进行限定。属性的本质就是两个方法,一个get,一个set。使用反编译工具查看:
记住:Fields:字段Methods:方法Properties:属性
按钮IL&bytes转为中间代码,再用c#,可以查看get和set方法:
所以不能用上文的字段直接进行赋值,而是通过属性set进行赋值,因为可以对其进行限定。即当赋值时调用set的属性,打印输出时调用get属性,其实中间将属性值赋值给了字段,所以属性是不存值的,虽然通过属性进行。 字段要保护起来,不能使用public,使用private,不加默认就是private,只能在当前类中访问,出去了就访问不到。外界的沟通通过属性来进行。所以字段必须私有,而属性要用public修饰。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ChuangzhiConsel{ class Program { static void Main(string[] args) { //创建对象 Person Tim = new Person(); Tim.Name = "Tim"; Tim.Gender = 's'; Tim.Age = -25; Tim.PrintInformation(); Console.ReadKey(); } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ChuangzhiConsel{ public class Person { //字段 private string _name; public string Name //属性 { get { return _name; }//当输出打印时 set { _name = value; }//当给属性赋值时 } //字段 private int _age; public int Age //属性 { get { return _age; } set { if (value < 0 || value > 120) { value = 0; } _age = value; } } //字段 private char _gender; public char Gender//属性 { get { if (_gender != '男' && _gender != '女')//也可以在set里设置 { return _gender='男'; } return _gender; } set { _gender = value; } } //方法 public void PrintInformation() { Console.WriteLine("我叫{0},今年{1}岁了,是一枚吃货{2}!", this.Name, this.Age, this.Gender); } }}
6、类与结构的区别
结构不具备类中的所有功能,如封装、继承、多态。并且结构是面向过程的,类是面向对象的。
- C#基础(11)——面向过程、面向对象、类中方法
- C#总结(面向对象基础)中
- 【C#基础】——面向对象
- 面向接口设计和编程——(面向对象、面向接口、面向过程、面向实现)
- c#面向对象基础
- C#面向对象基础
- c#面向对象基础
- c#面向对象基础
- C#面向对象基础
- C#面向对象基础
- C#面向对象基础
- C#基础-----面向对象
- c#面向对象基础
- 黑马程序员--C#中面向对象与面向过程
- C++基础篇(3)——从面向过程到面向对象
- 从面向过程到面向对象——在C中如何实现面向对象编程
- 什么是面向对象,什么是面向过程(基础的基础)。
- C# 面向对象设计基础 二(中)
- POJ2796 Feel Good 单调栈
- Activity--基础
- convertToRinex.exe 程序错误
- 数组(六)--插入排序
- TCP客户/服务器程序示例
- C#基础(11)——面向过程、面向对象、类中方法
- 59. Spiral Matrix II
- 模拟实现库函数strcpy
- 深度学习目标检测方法
- JDK 8.0 新特性——函数式接口和Lambda 表达式
- Machine Learning 之简单绘制决策树
- Oracle和MySql面试题
- Request以及Response常用方法
- ORM--------Hibernate、Mybatis与Spring Data的区别