C#基础7:类的定义
PS:注释和讲解全在代码中
1. 类的定义
类与对象关系图:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; //↑↑↑引入了5个系统自带的命名空间
//using C4_程序设计; 引入一个命名空间,例如“C4_程序设计(自身)”就是一个命名空间,只有引用了对应的命名空间,才能使用该空间中的类
namespace C4_程序设计 //最外层的这个namespace就是命名空间了
{class Point{public int x, y; //字段:变量private double val;public Point(int x=0, int y=0, double val=0) //方法:函数(这里是构造函数){this.x = x; //构造函数/方法/规则和C++一样,当然也可以重载this.y = y; //如果没有定义构造函数,则会有默认构造函数,但是定义了的话默认构造函数就不再生效this.val = val;}public double Val //属性:保护赋值,为了防止恶意赋值,例如一个人的年龄不可能超过1000岁,也不可能为负数{get //当通过属性名取值的时候,会自动调用get中的代码,获得val的值{return val;}set //当通过属性名给字段赋值的时候,会自动调用set中的代码,给val赋值{if (value >= 100) //当输入的值超过100,那么默认为100val = 100;else if (value <= 0) //输入为负数时默认为0val = 0;elseval = value;}}public void Print(){Console.Write("{0},{1}:{2}\n", x, y, val);}~Point() //析构函数,也和C++规则一样{//当然这个类完全没必要写个析构函数就是了,直接默认析构就好}}class 对象定义{static void Main(){Point me = new Point(0,0,0); //对象的实例化/*new实例化关键字到底做了什么??①在内存(堆空间)中开辟了一块空间②在开辟出来的这个空间中创建对象数据③调用对象的构造方法进行对象的初始化*/me.x = me.y = 5; //如果不定义默认为0me.Val = 1500;//me.val = 15; //错误,因为是私有的,所以不能直接赋值Console.Write("{0},{1}:{2}\n", me.x, me.y, me.Val); //输出结果为5,5:100Point you;you = me; //赋值的过程为传递堆空间中的引用地址,you和me指向了同一个堆空间地址me.x = me.y = -1000; //因此当你修改了me的内容,you也会被改变,毕竟两者指向的是同一个对象you.Print(); //输出结果为-1000,-1000:100/*是的,在这里C#和C++的机制就完全不一样,C#在执行“Point you”这一语句时,只是在栈中生成一个长度位4字节的引用变量you,并且缺省为null,即该引用不指向任何实例C#也没有复制构造函数C#和C++还不一样的地方就是:C#只有值和引用两种类型,而不支持指针(只有在unsafe模式下才可对指针进行操作)值类型通常是基本数据类型,如int,double,还有struct等;而所有的自定义的类,还有数组、代表、接口等都是引用类型这也很明显能看的出来,C++的引用和C#的引用基本上不是一个东西,对于C#的引用,它更像是个“指针”*/}}
}
C#基础7:类的定义相关推荐
- 【python基础】类的定义与使用
文章目录 1. 类的定义和使用 2. 对象的三大特性 2.1 封装 (1)通过对象调用被封装的内容 (2)通过self间接访问被封装的内容 2.2 继承 2.3 多态 3. 属性(变量)绑定 3.1 ...
- OC语言基础内容 类的定义 第一个OC
OC基础day01 第一个OC程序 OC与C的基本区别 C语言的源文件 XXX.c OC语言的源文件 XXX.m 在C语言中 用printf打印信息 OC中用NSLog()打印信息 OC中的改变 OC ...
- javascript基础教程_JavaScript基础教程(九)对象、类的定义与使用
对象.类的定义与使用 对象与类是面向对象程序设计语言教学过程中不可避免需要讲解的内容之一.很多人将两者混为一谈,简单认为对象就是类,类就是对象.实际上深入分析的话,对象与类的区别还是较为明显的.本文主 ...
- python类class定义_python基础教程之类class定义使用方法
面对对象(oop)中的对象,是一个非常重要的知识点,我们可以把它简单看做是数据以及由存取.操作这些数据的方法所组成的一个集合.我们在学习函数(function)之后,知道了如果重用代码,那为什么还要用 ...
- 【零基础学Java】—类的定义(七)
[零基础学Java]-类的定义(七) 一.事物与类的对比 现实世界的一类事物 属性:事物的状态信息 行为:事物能够做什么 Java中用class描述事物也是如此 成员变量:对应事物的属性 成员方法:对 ...
- c++学习笔记之基础---类内声明函数后在类外定义的一种方法
在C++的"类"中经常遇到这样的函数, 返回值类型名 类名::函数成员名(参数表){ 函数体.} 双冒号的作用 ::域名解析符!返回值类型名 类名::函数成员名(参数表) { 函数 ...
- C++基础学习8:类的定义(class)
先来说说C和C++中结构体的不同a) C语言中的结构体不能为空,否则会报错(??)b) C语言中内存为空结构体分配大小为0,C++中为结构体和类分配大小为1bytec) C语言中的结构体只涉及到数据结 ...
- 【Python基础教程】类的定义和使用
哈喽兄弟们,今天咱们分享一下类的定义和使用. 文章目录 1.定义类 2.创建类的实例 3."魔术"方法--_ init () 4.创建类的成员并访问 4.1.创建实例方法并访问 4 ...
- python类的定义和使用_Python3基础之python 之 面向对象基础(定义类、创|python基础教程|python入门|python教程...
第七章面向对象 1.面向过程编程核心是"过程"二字,过程指的是解决问题的步骤,即先干什么再干什么基于该思想编写程序就好比在编写一条流水线,是一种机械式的思维方式 优点:复杂的问题流 ...
最新文章
- 预训练BERT学习笔记_Storm*Rage的博客
- OpenCV放大视频Upscaling video
- 联想拯救者y空间兑换代码_锐祥贴片Y电容进入联想手机快充供应链,性能获世界500强认可...
- 16位汇编 寄存器的操作
- TensorFlow系列(一):TensorFlow是什么
- caffe学习笔记(1)
- 一步一步使用阿里云容器服务部署基于.NET的JEXUS网站 (转)
- Scala中的下划线使用总结
- springboot1.5.x+ seata1.4.2(最新版本)+springcloud ( Edgware.SR5) +eureka+feign+mybatis-plus(最新)
- 如何删除“我的电脑”、“此电脑”中坚果云图标--三种方法(2020年的可行方案)
- python 中的switch
- windows server ----域(D)的创建
- MATLAB提示错误使用network,优化双隐藏神经网络出现错误使用 network/subsasgnne...
- 原子核的奥秘:核力的发现
- unity材质球发光_Unity Lighting - Emissive Materials 自发光材质(九)
- 2021-5-8字符串作业
- MATLAB矩阵归一化
- Win10 - 电池信息报告ERROR:(0xfa5)
- tomcat默认编码问题
- 【软考必背】100条知识点复习提纲,高频考点必须拿下!
热门文章
- python是什么软件-Python 是什么软件?
- 零基础学python大概要多久-零基础自学python要多久?
- 【干货】怎样用深度学习做语音识别
- java类对象的内部结构图解(java对象模型精讲)
- sql语句分析是否走索引_mysql sql语句执行时是否使用索引检查方法
- 【二叉树】剑指offer:二叉树中序遍历的下一个节点
- 【java笔记】IDEA debug调试
- python tkinter text改变文本字体颜色_Python3 tkinter基础 Button text,fg 按钮上显示的文字 文字的颜色...
- java 内嵌机制_[转] Java中public,private,final,static等概念的解读
- android百度地图单点定位_Android百度地图实现搜索和定位及自定义图标绘制并点击时弹出泡泡...