C#中类为什么要实例化
在使用C#语言时,发现一下有关类实例化的问题,在此之前先复习一下类和对象的概念,类是一个抽象体,是对一类事物的抽象体;而对象就是一个具体的事物,对象的抽象就是类。车就是一个类,而车包括面包车,小汽车,跑车等这些对象,如果维修一辆车,我不能说我维修车,而你维修的是一辆能看得见,摸得着的具体的这辆小汽车。所以要使用类,必须通过对象来达到效果。
【需实例化】
在使用类的非静态方法或属性时,必须将类实例化
可以这样理解,把类比做盖房的图纸,如果要使用房子的功能,如住人,得有真实存在的房子实体才行,所以要想使用房子的功能,需要把图纸转化为房子实体,这个过程就称为实例化过程。
以下代码中,要想调用Name属性和shout方法,必须先将Cat类实例化
class Program
{
static void Main(string[] args)
{
Cat c = new Cat();
c.Name = "小猫";
c.shout();
Console.Read();
}
}
class Cat
{
string name ;
public string Name
{
get { return name; }
set { name = value; }
}
public void shout()
{
Console.WriteLine("我是{0},喵",Name);
}
}
【不需实例化】
在使用类的静态方法或属性时,不用将类实例化
可以这样理解,我想使用图纸上房子的长宽高时,我不必先建一座房子才能知道或使用它的长宽高,我可以直接把值从图纸上拿出来使用,只要是这个值,建的房子的长宽高都一样,所以就不需要实例化了,此种情况长宽高就为静态属性/方法。
以下代码中,Name属性和shout方法可以通过类直接调用(与上面不同之处就是在字段、属性、方法之前加了关键字static)
class Program
{
static void Main(string[] args)
{
Cat.Name = "小猫";
Cat.shout();
Console.Read();
}
}
class Cat
{
static string name ;
public static string Name
{
get { return name; }
set { name = value; }
}
public static void shout()
{
Console.WriteLine("我是{0},喵",Name);
}
}
C#中类为什么要实例化的更多相关文章
- 01.C#数据类型、排序、过滤(一章1.1-1.2)
随着看的文章及探讨越多,越发现自己实在太不定性了,看下<C#深入理解>吧,做一下读书笔记,从中发现自己的不足.闲话不说,进入正题吧. 在C#1中定下一个简单的数据类型 public cla ...
- go 学习笔记之10 分钟简要理解 go 语言闭包技术
闭包是主流编程语言中的一种通用技术,常常和函数式编程进行强强联合,本文主要是介绍 Go 语言中什么是闭包以及怎么理解闭包. 如果读者对于 Go 语言的闭包还不是特别清楚的话,可以参考上一篇文章 go ...
- python中类的定义、实例化、封装以及私有变量/方法
1. 定义类 python中定义一个类的格式如下: class MyClass(object): def __init__(self,data1,data2): self.__data1=data1 ...
- python中类的创建和实例化
python中同样使用关键字class创建一个类,类名称第一个字母大写,可以带括号也可以不带括号: python中实例化类不需要使用关键字new(也没有这个关键字),类的实例化类似函数调用方式: # ...
- oc中类的实例化及方法调用
上一篇我们讲了oop和类的创建,上一篇的重点我们回顾一下 类 对象 实例 方法 接口 这一篇我们来实现类的实例化,调用类中的公共参数和方法:类的实现在.m文件中,以下是实现代码: // // HuiT ...
- Day05_20_Java中类的创建和对象的实例化
类的创建和对象的实例化 类的定义 类属于引用数据类型,java语言中所有的.class都属于引用数据类型 在类体当中,方法体之外定义的变量被称为 成员变量,成员变量没有赋值,系统默认是0: 语法结构: ...
- C#中类的实例化过程
创建某个类型的第一个实例时,所进行的操作顺序为:1.静态变量设置为02.执行静态变量初始化器3.执行基类的静态构造函数4.执行静态构造函数5.实例变量设置为06.执行衯变量初始化器7.执行基类中合适的 ...
- UML中类之间的几种关系
类之间可能存在以下几种关系:关联(association).依赖(dependency).聚合(Aggregation,也有的称聚集).组合(Composition).泛化(generalizatio ...
- 浅谈UML中类之间的五种关系及其在代码中的表现形式
本文转载:http://www.cnblogs.com/DebugLZQ/archive/2013/05/13/3066715.html 什么是类? 将某类东西归纳在一起,可以成为一个类. 类有很多种 ...
随机推荐
- 如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案
如何优化Mysql千万级快速分页,limit优化快速分页,MySQL处理千万级数据查询的优化方案
- Http怎么处理长连接
http协议中有和keep alive特性,这个在http1.1中有, 可以保持浏览器和服务器之间保持着长连接,http本身是无连接的协议, 通过tcp实现数据的传输,处理长连接要注意什么时候数据服务 ...
- leetcode — remove-element
/** * Source : https://oj.leetcode.com/problems/remove-element/ * * Created by lverpeng on 2017/7/12 ...
- 利用python数据分析与挖掘相关资料总结
小生今年研二,目前主要从事软件工程数据挖掘与分析.之前一直苦于找不到一个从数据预处理.数据分析.数据可视化和软件建模的统一平台.因此,小生辗转反辙学习了java,R语言,python,scala等等. ...
- iOS开发必会的坐标系探究
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由落影发表于云+社区专栏 前言 app在渲染视图时,需要在坐标系中指定绘制区域. 这个概念看似乎简单,事实并非如此. When an a ...
- Docker启动出现"No space left on device" 或者 docker日志太多导致磁盘占满问题
机房有一台服务器上面部署了多个docker容器, 并且每个docker容器都往stderr中源源不断的输出日志,导致磁盘被占满了.Docker容器在启动/重启的时候会往/var/lib/docker中 ...
- Authorization With Pundit
rails 权限管理gem PunditAuthorization With Pundit
- JWT 从入门到精通
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点 ...
- MONGODB(四)——DBObject与JavaBean转换
一.DBObject 转为 JavaBean /** * 将实体Bean对象转换成DBObject * */ public static <T> DBObject beanToDBObje ...
- override与new的区别
using System; namespace ConsoleAppDemo { class BaseClass { public void Fun() { Console.WriteLine(&qu ...