c# 什么是类、对象、方法、属性、字段、函数!!!

作者&投稿:宇文诗 (若有异议请与网页底部的电邮联系)
如何理解c#类中的(字段,属性,方法,事件)~

字段
字段是被视为类的一部分的对象的实例,通常用于保存类数据。例如,日历类可能具有一个包含当前日期的字段。
可以选择将字段声明为 static。这使得调用方在任何时候都能使用字段,即使类没有任何实例。
可以将字段声明为 readonly。只读字段只能在初始化期间或在构造函数中赋值。
static readonly 字段非常类似于常数,只不过 C# 编译器不能在编译时访问静态只读字段的值,而只能在运行时访问。
属性
属性是类中可以像类中的字段一样访问的方法。属性可以为类字段提供保护,以避免字段在对象不知道的情况下被更改。
属性使类能够以一种公开的方法获取和设置值,同时隐藏实现或验证代码。
get 属性访问器用于返回属性值,而 set 访问器用于分配新值。这些访问器可以有不同的访问级别。
value 关键字用于定义由 set 索引器分配的值。
不实现 set 方法的属性是只读的。
对于不需要任何自定义访问器代码的简单属性,可考虑选择使用自动实现的属性。看个示例:public class userInfo
{
//字段
private string name; //其它类不能访问
public int age; //其它类可访问,但既可赋值,也可取值。
//属性
public string Name //其它类可访问,但只能赋值,不能取值。
{
//注释了get就只能给Name赋值,而不能取值。反之依然
//get{return name;}
set
{
//TODO:可以调用方法等其它操作。 这里就是一个方法,方法名为set,参数为value;
name=value;
}
}
} .方法
方法定义类可以执行的操作。方法可以接受提供输入数据的参数,并且可以通过参数返回输出数据。方法还可以不使用参数而直接返回值。事件
事件向其他对象提供有关发生的事情(如单击按钮或成功完成某个方法)的通知。事件是使用委托定义和触发的。

在面向对象里面,对象和类是不同的,对象是特定类的一个实例,比如如果车是一个类的话,某个人的一辆奔驰车就是一个对象,它是车这个类的实例。类是抽象的,而对象是具体的。方法是定义在对象上的操作,属性是记录对象性质和状态的变量,拿上面车的例子来说,车的重量,最大速度是车的属性,启动,停在这些动作则可以定义为车的方法。我说的可能不太准确,建议楼主看看面向对象相关的书籍。


补充:
对象和类当然是不一样的,对象是类的具体化(其实不准确),再打个比方吧,
告诉你猫是一个类,它包含两个属性,重量和毛色,
根据上面的信息你能知道是指是哪只猫吗?不能吧,因为你不知道它的重量和毛色。 现在把猫实例化,即指定它的重量和毛色,假定为1kg、黑色,而这个1kg黑色的猫就是对象了,同样,2kg白色的猫,3kg黄色的猫,等都是对象。

当然1kg黑色的猫也可以是作为一个类,为这个类加个主人属性,
实例化类就得到对像,比如李四的(1kg黑色猫),张三的(1kg黑色猫)... 就是这个类的对象。

接着,李四的lkg黑色猫也可以成为一个类了,那这个类的对象呢,和上面一样,加个能够区分的属性。
......
这样就形成了类的层次结构了,然后父类,子类(派生类),继承等概念都可以理解了。

面向对象、类、字段、属性、构造函数、析构函数
面向对象的基本概念:

(1)对象

对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

(2)对象的状态和行为

对象具有状态,一个对象用数据值来描述它的状态。

对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。

对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中

(3)类

具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。

类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。

类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。

(4)类的结构

在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。

①一般——具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。

②整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。

OOD ( Object-Oriented Design ):面向对象设计

OOA ( Object-Oriented Analysis ):面向对象分析

OOP( Object Oriented Programming ):面向对象编程

类的九大成员:

字段( Field )

属性( Property )

方法( Method )

构造函数( Constructor )

析构函数( Destructor )

索引器( Indexer )

事件( Event )

运算符( Operator )

嵌套类(Nested class )

五种访问修饰符:

private:仅在类的内部访问

public:没有访问限制

internal:在同一个程序集内访问

protected:类和其派生类的内部访问

protectedinternal:类和其派生类的内部或者同一个程序集内访问

字段:

对象具有状态,这个状态是通过数据值来描述的

说的直白点就是一个对象有用来描述它的文字,字段就起到这个作用。比如:人这个对象,有性别、名字…用来对其进行具体的描述。

字段原则上是是私有的。为什么呢?因为每个对象所对应的数据值并不是一样的,为了更好的说明是那个对象就定义成私有的了。这里提到私有这个词就要注意上面的访问修饰符了。所以原则上定义字段用的访问修饰符就是:private

属性:

上面的字段已经是私有的了,那么在别的类中要访问对象中的字段怎么办呢?如果没有属性如果想访问的话就必须每个字段要写一个相应的方法。在没有属性语法的语言里通常的作法是使用对象方法来访问属性。或者理解为:属性是对私有字段的一个简单包装,使用属性而不是直接公开私有字段的一个好处就是在属性的获 取访问器或设置访问器里加入额外的逻辑并不会为客户端代码带来麻烦。

//字段

privatestring name;

//属性作用一:读写设置

//注释:get访问器,读操作;set访问器,写操作

public string Name

{

get{ return name; }

set{ name = value; }

}

//字段

private int age;

//属性作用二:验证输入数据的合法性和正确性

public int Age

{

get{ return age; }

set

{

//age= value;

if(value >= 0 && value <= 150)

{

age= value;

}

else throw new Exception("年龄输入不正确!");

}

}

属性作用三:隐藏细节

构造函数和析构函数:

namespace ConsoleApplication_shuxing

{

class Test_gaozaohanshu

{

//首先要明白构造函数和析构函数是什么?

//构造函数和析构函数分别管理对象的建立和释放,负责对象的诞生和死亡的过程。当一个对象诞生时,构造函数负责创建并初始化对象的内部环境,包括分配内存、创建内部对象和打开相关的外部资源,等等。而当对象死亡时,析构函数负责关闭资源、释放内部的对象和已分配的内存。

//构造函数

//构造函数是类中的一种特殊方法

//它的特殊性主要体现在如下几方面:

//构造函数的方法名和类名相同;

//构造函数没有返回类型;

//构造函数的主要作用是完成对类对象的初始化工作;

//在创建一个类的新对象时,系统会自动调用该的构造函数初始化新对象;

//注意:非必要我们可以不向一个类提供构造函数,编译器会在后台创建一个默认的构造函数。但如果提供了自定义的构造函数,编译器就不会提供默认的构造函数。

//下面这个是系统默认的构造函数,也是最简单的构造函数

public Test_gaozaohanshu()

{

}

//有参数的构造函数

public Test_gaozaohanshu(string str_Test)

{

Console.WriteLine(str_Test);

}

//在实例化的时候就赋值给str_Test在程序运行的时候就会将你输入的内容写在控制台应用程序上面

//构造函数的重载

//上面的两个构造函数已经形成了构造函数的重载

//重载

//函数名称相同

//在一个类中

//参数类表不同(包括参数的个数,数据类型)

//构造函数的访问修饰符

//public外,可以设置构造函数的修饰符为private及protected,若设置为private,则该类不能用这个构造函数来实例化;若设置为protected,则该类只能在派生类中用该构造函数实例化

}

//在构造函数中调用在这个类中的其他构造函数

public class UserModel

{

private string _userID;

private string _userName;

public UserModel(string userID)//带一个参数的构造函数

{

_userID = userID;

}

public UserModel(string userID, string userName)//带两个参数的构造函数

: this(userID)

{

_userName = userName;

}

//面的代码中带有两个参数的构造函数后添加了: this(userID)代码,这样就实现了调用带有一个参数的构造函数的方法。

//这种方法叫构造函数的初始化器,:this表示调用本类的构造函数,userID为参数,这样编译器就会调用那个和这个参数最匹配的构造函数。

//那这两个构造函数的执行顺序是怎样的?若按上面的代码,则是先执行有一个参数的构造函数,然后再执行有两个参数的构造函数。

}

//调用基类中的构造函数

public class User

{

private string _userID;

public User(string userID)

{

_userID = userID;

}

}

public class AdminUser : User

{

private string _userName;

public AdminUser(string userID, string userName)

: base(userID)

{

_userName = userName;

}

}

//方法和调用本类内构造函数的方法基本相同,只是将this换成了base。需要注意的是,子类必须有访问基类相应构造函数的权限,即基类的构造函数设置了合适的修饰符

}

类就是对象,对象有属性,字段,方法,
方法就是函数,
OOP(面向对象概念)概念里面万物皆对象。可以把任何一个东西看作是个对象 。
比如,一张纸,把它视作一个对象,那么它的属性即是:长、宽、材质、厚度等等。。一系列的东西。
方法:怎么去用这张纸,比如把它裁成N块。即方法 裁剪(参数,参数..){};这个方法来实现把这张纸裁成N快,每块大小N。

class 纸张{
//字段 可以封装字段,使类字段成为这个类的属性,两者基本一个概念。
private int _长度=100;
private int _宽度=40;
private string _材质=".....";
private int _厚度=1;

public 纸张(){
//构造函数
//构造函数用来初始化纸张类,设置纸张初属性。可以带参数。
}

//裁剪的方法
public 纸张 裁剪(参数){
//方法实现
return 返回裁剪后的纸张对象;
}
}

我以为我是第一个回答,没想到前面有两个人了,所有我来修改一下回答。
楼上有误!类和对象是不一样的,类是是对象的抽象。具体区别等你以后精通了会理解的。。。

类是人(这只是一个概念)。
对象是具体的某个人(比如张三,王二麻子,具体的一个大活人,在地球上占据了一定空间的人)。
方法或或者说函数(人的某些行为,比如人都会吃,拉等等)。
属性(人的某些特性,如人的姓名,性别)
字段是指类里面的成员。
函数和方法没有语法上的区分,一样一样的。
代码如下:(有些大小写要改下,自己改下)
class human
{
char _sex;//类的私有字段
public char Sex//这个语法上称为属性
{
get{return this._sex;}
set{this._sex=value;}//当然这里应该作一个判断,因为sex不是男就是女或是人妖,就三类了,不能什么值都合法。
}
public void eat(object food)//这就是人的行为,对类而言就是类的方法。
{
console.write("eat "+food.tostring());
}
}
//以上就为人作了一个抽象,并以类的形式封装了。
class program
{
public static void main()
{
human Obama=new human();//这"Obama"”就是一个对象了,占据了一定内存的
Obama.Sex="妖";
Obama.eat("大便");//这就是Obama的行为
}
}

1.在c#中。类是主要的类型。类声明定义新的引用类型。一个类可以从另一个类继承。并且可以实现接口。类成员可以包括常数、字段、方法、属性、事件、索引器、运算符、实例构造函数、析构函数、静态构造函数和嵌套类型声明。每个成员都有关联的可访问性。它控制能够访问该成员的程序文本区域。有五种可能的可访问形式。
(1)public。不限制访问。
(2)protected。尽在同一个类内。或该类的派生类中访问。
(3)Internal。仅从同一个项目内访问。
(4)protected internal。访问限于同一个项目或派生类。
(5)Private。访问限于本类。

2.字段。是表示与对象或类关联的变量的成员。例子如下——
class Color
{
internal ushort redPart;
internal ushort bluePart;
internal ushort greenPart;
public Color(ushort red,ushort blue,ushort green)
{
redPart=red;
bluePart=blue;
greenPart=green;
}
....
}
此例显示了一个Color类,该类具有名为redPart、bluePart、greenPart的内部实例字段。

3.方法。方法是实现可以由对象或类执行的计算或操作的成员。方法有一个形参表(可能为空)、一个返回值(若返回值类型为void则没有)。并且方法可以是静态的或是非静态的。通过类访问静态方法。通过类的实例访问实例方法。
下面代码定义了一个Stack类。该类具有若干静态方法(Clone和Flip)和若干实例方法(Push、Pop和ToString)。
public class Stack
{
public static Stack Clone(Stack s) {...}
public static Stack Flip(Stack s) {...}
public object Pop() {...}
public void Push(object o) {..}
public override string ToString() {...}
...
}
class Test
{
static void Main()
{
Stack s=New Stack();
for(int i=1;i<10;i++)
s.Push(i);
Stack flipped=Stack.Flip(s);
Stack cloned=Stack.Clone(s);
Console.WriteLine("Original stack:"+s.ToString());
Console.WriteLine("Flipped stack:"+flipped.ToString());
Console.WriteLine("Cloned stack:"+cloned.ToString());
}
}

4.属性。属性提供对对象或类的特性的访问。属性是字段的自然扩展。两者都是具有关联类型的命名成员。并且访问字段和属性的语法相同。然而。与字段不同。属性不表示存储位置。相反。属性有访问器。这些访问器指定在他们的值被读取或写入时执行的语句。
属性用属性声明定义。属性声明的第一部分看上去和字段声明非常类似。第二部分包含一个get访问器和/或一个set访问器。在下面的例子中。Button类定义一个Caption属性。
public class Button
{
private string caption;
public string Caption
{
get
{
return caption;
}
set
{
caption=value;
Repaint();
}
}
}
可读取并写入的属性(如Caption)同时包含get和set访问器。当读取属性值时调用访问器。当写入属性值时则调用set访问器。在set访问器中。传入一个名为value的隐式函数。利用该参数可以更新属性。
利用属性可以制造直接访问类的成员的假象。但同时又可以对访问过程进行设置。一般讲类的字段定义为私有的。而通过设置相应的属性访问该私有字段。

5.事件。事件是使对象或类能够提供通知的成员。类通过提供事件声明来定义事件。事件声明类似于字段声明。但他增加了event关键字和一组可选的事件访问器。此声明的类型必须为委托类型。
委托类型的实例封装一个或多个可调用的实体。对于实例方法。可调用的实体由一个实例和该实例的方法组成。对于静态方法。可调用的实体仅由一个方法组成。已知委托实例和适当的参数集。可以用参数集调用此委托实例的所有方法。


类是泛指的东西,比如说,你是人类;
对象
对象是具体指某种东西,比如说你,你就是一个具体的对象;
方法
方法,是你能做的什么事,也就是你的行为,向什么睡觉、跑步,吃饭等等,都是方法...
属性
属性,就拿你来做比喻吧,你的名字、性别、年龄、等等,都是属性...
字段
表示与类或对象关联的变量叫字段(为了安全,才有的字段,大部分用private(私有的))
函数
那叫“构造函数”,每段程序都会有构造函数的,你要是不写,他就是隐士构造函数,
我用着不专业的术语给你回答,能明白吗?


四平市19710156808: C#中到底什么是方法什么是属性 -
比盆天方: 方法也可以称为函数和例程.方法是一个带名称的、独立的、以可重用的方式放置的代码片段.方法无需应用程序其他部分的干预便能运行,如果创建的正确,则能够执行其名称指示的特定任务.public void 方法(string xx,int ss){//这就是方法 } 属性提供了只读(get),只写(set),读写(get和 set)三种接口操作.public string 属性{ get{} set{} } 讲属性的:http://hi.baidu.com/skylin/blog/item/c971277f09c03b0b29388afe.html

四平市19710156808: c#中的类与对象怎么定义的? -
比盆天方: C#的类是一种对包括数据成员,函数成员和嵌套类型进行封装的数据结构.其中数据成员可以是常量,域.函数成员可以是方法,属性,索引器,事件,操作符,实例构建器,静态构建器,析构器.对象是你自己定义的,类是一个抽象的概念,而对象是具体的,比如说车是一个类的话,张三的那辆奔驰车就是车这个类的一个实例,动物是一个类的话,李四的家养的那只猫就是动物类的一个对象实例.举个例子吧: 类名 实例名=new 类名(参数); 例如:person she=new person(); she 就是person类的一个实例,也可以说是对象

四平市19710156808: C# 面向对象是什么 -
比盆天方: 面向对象是一种程序设计思路.兄弟可以百度一下. 如果要说C#面向对象,如果是某某课程里面的说的,那他一般指C#的面向对象编程. 一般包括类、方法、属性的定义,类的继承、方法重载、类的构造啥的. 属于C#学习的基础内容

四平市19710156808: c# 什么是类、对象、方法、属性、字段、函数!!! -
比盆天方: 类 好比 动物类型 对象 好比 人 方法 好比 人能做的事情如:吃饭,说话 属性 比如 基本属性,动物都具有 如:性别 字段 好比 似有属性 如名字,还理解不?

四平市19710156808: C#中“类”和“方法”各是什么意思?(初学者) -
比盆天方: 类 可以理解为一个对象;方法是这个对象的行为;同时类还可以有它的属性;

四平市19710156808: C#中属性和方法分别是什么意思 -
比盆天方: 举例子属性就是int a;String c;char d;等等方法如 void SayHi(){}这两个都在类里面的C#是面向对象编程,也就是说事物都有属性和方法,但在面向对象思想中,把这两者区分开,不考虑他们的内在联系所以属性是用来描述事物状态的,而方法就是用来描述事物的行为和功能的.

四平市19710156808: C#中什么是对象,什么是类.刚学小白一个~~~.
比盆天方: 你可以这样理解: “类”——抽象地对某种物种的描述(比如:“马”、“猴子”……) “实例”——具体化的“类”(比如“汗血宝马”(“马”的具体的一种种类)). 实例肯定是隶属于类,但是是类的具体化(属性上、行为上等).

四平市19710156808: C#语言.类有几部分组成?什么属性?类和对象有什么联系?类和文件名可以相同吗?试举例说明 -
比盆天方: 类: 是一类(事物or someting的)统称;对象: 是指具体的某事物or someting."对象"就是"类的实例".程序中类的声明方法是: 用关键字class, 加具体的自定义类名. 具体如下:class 类名{}程序中对象的创建方法是: 用关键字new...

四平市19710156808: C# 对象 方法 属性有和区别 -
比盆天方: 在面向对象里面,对象和类是不同的,对象是特定类的一个实例,比如如果车是一个类的话,某个人的一辆奔驰车就是一个对象,它是车这个类的实例.类是抽象的,而对象是具体的.方法是定义在对象上的操作,属性是记录对象性质和状态的...

四平市19710156808: C#中的类是什么?方法是什么? -
比盆天方: C# 是面向对象语言,类的关键词是class ,通俗点说,类应该是一个比较抽象的内容,比如:人就是一个类,人包括他,她,它,你;其中他,她,它,你都是具体的一个人 再来个例子:我们看到公路上跑的四个轮子的,我认为是汽车,它是一个总称,不管是什么牌子都是汽车,这汽车就是一个类,具体的奔驰,是一个具体的对象,汽车是类,具体的某个牌子的汽车就是对象,new出来的 类包括:字段,属性,方法,事件等等 举个例子:public class cal { int i =0; //这是字段 //这是方法 public void calcTest() { //.. } } 先这样,把类理解一下,不明白的,随时找我!

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网