7 .Net学习第七天

7.1 面向对象的概念

7.2 类

7.3 静态与非静态

7.4 构造函数

7.5 this关键字

7.6 析构函数

7 .Net学习第七天

7.1 面向对象的概念

C#是一种面向对象的语言

对面向过程的语言而言,其思想与人的常规思维一致,但是针对不同的目标,需要对每个目标分别给出的方式都需要重新编程

对面向对象的语言而言,对不同的目标,只需要调用不通的对象来实现这个目标

面向对象主要是为了写出通用性更强的代码,屏蔽差异

在代码中描述一个对象

方式是描述这个对象的属性和方法

举个例子

对于一台电脑,将其作为一个对象,那么它的

属性:

  • 屏幕尺寸
  • 内存大小
  • 处理器性能
  • ……

方法:

  • 开机
  • 关机
  • 重启
  • ……

在程序当中,类是一个对象的类型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Test18
{class Program{static void Main(string[] args){Console.BackgroundColor = ConsoleColor.Green;Console.ReadKey();}}
}

Console.BackgroundColor是Console类中的一个属性

Console.ReadKey()是Console类中的一个方法

7.2 类

//语法
[public] class 类名
{字段属性方法
}

实际应用,新建一个Person类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Test18
{public class Person{public string _name;public int _age;public char _gender;public static void Action(){Console.WriteLine("生命在于运动");}}
}

对该类进行实际调用

namespace Test18
{class Program{static void Main(string[] args){Person zhangSan = new Person();zhangSan._name = "张三";zhangSan._age = 22;zhangSan._gender = '男';Console.WriteLine("我叫{0},我今年{1}岁,我是{2}生", zhangSan._name, zhangSan._age, zhangSan._gender);zhangSan.Action();}}
}

类是不占用内存的,只有实例化一个对象时,才会占用内存

类的属性用于保护对象,对字段的赋值与取值进行限定

private string _name;
public string Name
{get{ return _name; }set{ _name = value; }
}
private int _age;
public int Age
{get{ return _age; }set{ _age = value; }
}
private char _gender;
public char Gender
{get{ return _gender; }set{ _gender = value; }
}

对字段的赋值在正常情况下应该通过属性实现,字段本身访问权限应该设置为私有那么在主方法中的调用应该使用属性中的get与set方法实现

zhangSan.Name = "张三";
zhangSan.Age = 22;
zhangSan.Gender = '男';
Console.WriteLine("我叫{0},我今年{1}岁,我是{2}生", zhangSan.Name, zhangSan.Age, zhangSan.Gender);

当我们对这个类中的_age字段赋值时,应该考虑到实际情况,人的年龄是大于0小于100的,所以在对属性Age的set方法中,需要对赋值进行判断

set
{if(value<0||value>100){value = 0;}_age = value;
}

对字段使用属性中的get方法时,也可以对其进行判断

get
{if(_gender!='男'&&_gender!='女'){return _gender = '男';}return _gender;
}

7.3 静态与非静态

static关键字用于表示目标是否为静态

在非静态类中,既可以有非静态成员,也可以有静态成员

在调用非静态成员时,需要使用对象名.非静态成员名

在调用静态成员时,需要使用类名.静态成员名

静态类中只允许有静态成员,不允许出现非静态成员

微软提供的大部分常用的类都是静态类,可以直接通过类名.成员名的方式调用

静态类在整个项目中是资源共享的

在程序结束后,静态类才会释放资源

堆栈中的临时变量将在使用结束后释放资源

7.4 构造函数

构造函数的作用是帮助我们初始化对象,即给对象的每个属性依次赋值

  • 构造函数不能有返回值,也不能写void
  • 构造函数的名称必须和类名一致
  • 构造函数可以重载,用来输入不同的参数
  • 创建类时,会默认创建一个无参构造函数
  • 当自己写了构造函数后,默认的无参构造函数会被替代
/// <summary>
/// 构造函数
/// </summary>
/// <param name="name">学生姓名</param>
/// <param name="age">学生年龄</param>
/// <param name="gender">学生性别</param>
/// <param name="idNumber">学生学号</param>
public Student(string name,int age,char gender,string idNumber)
{this.Name = name;this.Age = age;this.Gender = gender;this.IdNumber = idNumber;
}Student zhangsan = new Student("张三", 18, '男',"88888888");

7.5 this关键字

this可以代指当前类的一个对象

在类当中显示调用本类的构造函数

public Student(string name, int age,char gender) : this(name, age, gender, "88888888") { }
public Student(string name, int age) : this(name, age, '男', "88888888") { }
public Student(string name) : this(name, 0, '男', "88888888") { }

7.6 析构函数

析构函数会在程序结束时执行

析构函数的主要作用是帮助我们释放资源

在.Net平台上,引入了GC,会自动帮我们释放资源

~Student() { } //析构函数会在程序结束时执行

.Net平台学习笔记(7)相关推荐

  1. 云平台学习笔记(三)-实践

    一.实验目的 本实验目的: 1.熟练克隆虚拟机: 2.熟练配置域名解析 3.学会配置 Chrony: 4.学会安装 OpenStack 基础框架: 5.学会安装 Mariadb 数据库 6.熟练为虚拟 ...

  2. 迪文屏幕T5L平台学习笔记一:开发环境搭建注意事项

    前面一直用T5UID3平台的屏幕开发,但是吐槽下<DWIN C Compiler 1>编译器bug太多,项目能不能做好,全靠运气:售后说T5L平台支持keil开发,我感觉挺好,于是从新学习 ...

  3. 迪文屏幕T5UID3平台学习笔记二:变量图标显示和按键返回值按钮学习

    需要实现一个功能:当点击某个按钮时候,要求能够改变按钮的字体和颜色,比如: 点击strat按钮后,显示stop,这样再点击就实现Stop逻辑,同时显示变成Start,也 就是说把Start和Stop按 ...

  4. 百度AI studio平台学习笔记

    百度Paddlepaddle深度学习学习营笔记总结 自学深度学习过程 开始了解到百度深度学习AI Stuidio平台时,不是它终于出现的感觉,而是我终于等到它的感觉. 过去学习机器学习知识的方式中,会 ...

  5. CodeQL 代码审计平台学习笔记

    CodeQL是一款代码审计分析平台,它将Python.Go.JavaScript等语言解析生成语法树并存储到数据库中,之后通过QL语法进行代码审查与筛选.你可以按照自己的想法写代码审计检测脚本,甚至进 ...

  6. 微信公众平台学习笔记

    微信公众号平台各个号的区别 订阅号 主要偏于为用户传达咨询(类似报纸杂志),认证后都是每天只可以群发一条消息 服务号 主要偏于服务交互(类似银行,114,提供服务查询),认证前后都是每个月可群发4条消 ...

  7. 迅雷云加速开放平台学习笔记——说明

    最近在研究软件的自动更新功能,手动更新太麻烦而且对电脑小白来说容易出错.之前对自动更新没什么概念,不知道如何实现.简单百度之后,原来"更新"功能是一个单独的模块,在需要更新的时候启 ...

  8. 迪文屏幕T5L平台学习笔记七:RS485测试

    由于串口通信距离近,且容易受到干扰,最近改为RS485通信方案,迪文屏幕DMG10600K070_03WTC正好也支持RS485通信,把调试过程记录下. 1.首先看下数据手册: 串口5支持RS485通 ...

  9. 迪文屏幕T5UID3平台学习笔记四:串口使用和定时器使用

    我感觉迪文屏幕分两大类吧,指令屏和OS屏,指令屏幕只能通过UART指令交互和DWIN GUI交互: OS屏幕,则可以通过在屏幕上二次开发,来实现我们的功能,当然了,OS屏幕也支持UART指令和 DWI ...

最新文章

  1. Eclipse与AndroidStudio快捷键对比
  2. 磁铁对于小型直流电机的影响
  3. 打开Eclipse时出现Failed to create the Java Virtual Machine
  4. 011_JavaScript数据类型
  5. 全球及中国5-氯-2-羟基苯甲酸产业专项调研与投资潜力预测报告2022-2028年
  6. php+循环定时任务,php定时任务循环执行replace操作无故中断
  7. kafka python教程_kafka python 指定分区消费
  8. java 控制 sortedset_Java集合的checkedSortedSet()方法和示例
  9. Java Web实训项目:西蒙购物网(下)
  10. for循环提高内存访问效率的做法
  11. SRA 案例:关于华为开发者联盟基础服务文档内容的改进建议(华为开发者联盟文档深度体验官)
  12. R语言学习之R程序包安装
  13. Textview属性Kotlin.Android
  14. (C语言课程设计)学生选修课程系统设计
  15. 标签设计软件如何设计注册商标标识
  16. 搜索计算机找不到,win7找不到搜索框怎么办?win7找不到搜索框修复方法
  17. android 读取excel表格数据(暂时只支持xls格式)
  18. NOKOV度量动作捕捉用于多智能体协同系统等效验证实验
  19. 【linux】循序渐进学运维-基础篇-netstat命令详解
  20. 《交互设计》作业-第四周

热门文章

  1. 用python的turtle画模仿3d星空、运动的恒星小宇宙
  2. pygame模拟下雪场景
  3. Mac-移动硬盘在Mac上能用在Win7不显示
  4. 马踏棋盘问题的程序c语言,请各位C语言大神解释下马踏棋盘的程序,各模块功能,原理,方法,如? 爱问知识人...
  5. JVM类加载机制-面试
  6. 浅谈UpdatePanel
  7. 快速分析出德邦快递揽收后没有物流的单号
  8. 简单制作扑克牌和洗牌
  9. ProSci 艾美捷14 3 3 zeta抗体说明书
  10. fiddler修改网页标题