c# 什么是类、对象、方法、属性、字段、函数!!!
什么是类、对象、方法、属性、字段、函数!!!我泪奔了!!!!这么多。。搞得我脑袋都大了!!形象的比喻有木有?伤不起啊。。!!!...
什么是类、对象、方法、属性、字段、函数!!!
我泪奔了!!!!这么多。。搞得我脑袋都大了!!
形象的比喻有木有?伤不起啊。。!!! 展开
我泪奔了!!!!这么多。。搞得我脑袋都大了!!
形象的比喻有木有?伤不起啊。。!!! 展开
11个回答
2011-09-02
展开全部
面向对象、类、字段、属性、构造函数、析构函数
面向对象的基本概念:
(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。需要注意的是,子类必须有访问基类相应构造函数的权限,即基类的构造函数设置了合适的修饰符
}
面向对象的基本概念:
(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 返回裁剪后的纸张对象;
}
}
方法就是函数,
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的行为
}
}
楼上有误!类和对象是不一样的,类是是对象的抽象。具体区别等你以后精通了会理解的。。。
类是人(这只是一个概念)。
对象是具体的某个人(比如张三,王二麻子,具体的一个大活人,在地球上占据了一定空间的人)。
方法或或者说函数(人的某些行为,比如人都会吃,拉等等)。
属性(人的某些特性,如人的姓名,性别)
字段是指类里面的成员。
函数和方法没有语法上的区分,一样一样的。
代码如下:(有些大小写要改下,自己改下)
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关键字和一组可选的事件访问器。此声明的类型必须为委托类型。
委托类型的实例封装一个或多个可调用的实体。对于实例方法。可调用的实体由一个实例和该实例的方法组成。对于静态方法。可调用的实体仅由一个方法组成。已知委托实例和适当的参数集。可以用参数集调用此委托实例的所有方法。
(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(私有的))
函数
那叫“构造函数”,每段程序都会有构造函数的,你要是不写,他就是隐士构造函数,
我用着不专业的术语给你回答,能明白吗?
类是泛指的东西,比如说,你是人类;
对象
对象是具体指某种东西,比如说你,你就是一个具体的对象;
方法
方法,是你能做的什么事,也就是你的行为,向什么睡觉、跑步,吃饭等等,都是方法...
属性
属性,就拿你来做比喻吧,你的名字、性别、年龄、等等,都是属性...
字段
表示与类或对象关联的变量叫字段(为了安全,才有的字段,大部分用private(私有的))
函数
那叫“构造函数”,每段程序都会有构造函数的,你要是不写,他就是隐士构造函数,
我用着不专业的术语给你回答,能明白吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询