体检营销型网站,美团服务商平台,文化类网站建设方向,wordpress poedit学习过了C#的基本属性函数后#xff0c;接下来的学习我觉得比较重要。C#是一种面向对象的语言#xff0c;下面复习一下面向对象中的一些名词。 类#xff1a;把一些系列东西#xff0c;把他们的共同的属性和方法抽象出来#xff0c;给他起一个名字就是XXX类。类中定义… 学习过了C#的基本属性函数后接下来的学习我觉得比较重要。C#是一种面向对象的语言下面复习一下面向对象中的一些名词。 类把一些系列东西把他们的共同的属性和方法抽象出来给他起一个名字就是XXX类。类中定义的静态的就是属性 动态的方法就是功能 。 对象凡是能够看得见摸得着的东西就是对象说白了就是某个类里面的一个具体的东西(成员)。在现实生活中是先有对象再有类的万物皆对象。。但是在程序里是先有类再有对象的。C#是面向对象编程的在程序中一切运行的基本单位都是对象。类的定义格式[访问修饰符] class 类名 {//类体 } 在程序里面有且只能有一类包含Main方法这个类称之为主类。 intbytelong都是一个数据类型---整数类型class也是一个数据类型--类类型interface是一个数据类型但他是接口类型。本身类就是一个数据类型---类类型有这个类定义的对象是这个类型的变量。 创建对象过程是:就是把类里面所有的东西赋值一份放到对象的内存空间中。那么对象方式属性和方法是自己内存空间中的。一个类可以创建n个对象那么n个对象之间是没有任何的关系唯一是他们产生于一个类。 类创建对象的格式如 类名 对象名 new 类名(); 类中的属性是对成员变量的一个封装使得这个变量具有了读和写的权利。一般情况下成员变量是私有类型只能在类的内部使用。一般情况属性都是用public来修饰。如果在类的外面使用则应该把成员变量封装成属性。格式如下 public 类型 属性名 { get{return 成员变量;} set{成员变量value;} } 访问修饰符一般有public和private其中public:共有的在哪里都能够用的方法private:私有的只能在类的内部使用也就是对象的内存空间中使用。由private定义的变量和方法对象不能够直接对其调用。但是可以通过间接来访问。 注意:以后我们所说的对象成员和实例都代表一个意思也就是 对象成员实例从而可知成员的变量实例的变量对象的变量不难知道成员方法成员函数成员功能成员方法的书写格式如下 [访问修饰符] 返回值 函数名(参数列表) { } 构造函数是用来创建对象的。构造函数开辟出一个内存空间这个空间放在堆里面。此时对象就指向了这个内存空间然后类里面的东西复制到这个空间中。构造函数是一个特殊的函数没有返回值构造函数名必须和类名一样。构造函数除了用来创建对象之外还起到以下作用:初始化成员变量使对象的多元化。默认情况下系统会为类提供一个空的构造函数public 类名(){}。一旦为类增加了构造函数那么系统就不会为这个类添加一个默认的构造函数。一般情况下他的书写格式如下[访问修饰符] 类名(构造函数名)(参数列表){ } 建议:无论在什么情况下必须显示定义一个空的构造函数。 函数重载指得是函数可以具有相同的方法名但是参数的类型个数顺序不一样的函数互为函数的重载。函数的重载是因为功能一样但是处理的内容和方式不一样。函数的重载前提条件是函数必须在同一个类里面。 this关键字this指的就是当前对象。使用this关键字可以使得参数见名知意同时起到了成员变量和参数之间的区别。值得注意的是this关键字是多态的。 static关键字通过static关键字修饰方法变量属性都是属于类的。只能通过类来调用不能通过对象来访问。凡是通过static关键字修饰的方法只能够调用有static修饰的方法和变量。但是不能够直接调用成员的变量和方法。那么成员的方法可以直接的调用Static修饰的方法和变量。建议直接通过类名来访问Static修饰的变量和方法。static修饰的变量和方法在内存中只创建一次。直到程序退出才会消失。也就是说是谁的谁调用。 C#的一些新特性 1,属性可以直接写属性而不需要成员变量get和set也不需要实现。 2,创建对象在创建对象的时候可以直接给属性赋值。如 People p new People(){Name,Age90}; 3,通过var关键字来标示任何类型的变量但是不是说就是若类型语言 但是Var定义的变量只能够在方法里面使用。。如 var s sss; var p new People(); 4匿名对象可以通过new 关键字来创建一个匿名对象这个对象没有类型。属性可以随意定义。注意匿名对象只能通过Var关键字定义的变量来接受。 C#的继承继承是用来扩展自身的功能。通过关键符号“:”来实现继承以下这些名词意思都是相等的 父类基类超类base class子类sub类派生类。继承中的构造函数默认情况下子类中的构造函数调用的是父类的空的构造函数。如果父类中没有空的构造函数那么子类的构造函数必须显示的调用父类中的某一个构造函数。 base关键base指得是父类对象。如果base放在子类构造函数后则base调用的是父类的构造函数。如果base在普通方法中则指的是创建的父类对象可以调用父类对象中的方法和属性。 方法的重写由于父类的方法不能够完成某种功能单还必须调用这个方法则子类可以重写这个方法加强其功能。在父类里面如果一个函数可以让子类重写必须在在方法的前面用vritual关键来修饰。说明这个方法可以被子类重写。同理如果在子类里面要重写父类的方法则应在方法前面加上override关键字说明这个方法是重写父类的。重写方法的要求是必须有继承重写的方法和被重写的方法必须一模一样。 多态是一个事物可以同时具有多种较色但是在某一种特殊的场合只表现出一中。其中比较重要的两种转型得需要我们深入的理解一下我就是在这方面对多态有些概念的模糊不过通过老师的深入解析渐渐的也就参透了其中的意思。 1上转型 把子类对象赋值给父类对象称之为上转型。他的原理实际上是把子类对象中的父类对象赋值了父类此时的赋值语句两边的类型是相同的。此时这个父类对象能够调用的方法是自己的方法和已经重写过的方法如果方法没有被子类重写那么调用的还是自己的方法。他的用途是方便同一标准根据具体实现不同而调用不同的方法从而实现不同的功能和样式。 如 WuDang w new People(); w.sing();//已经重写的方法。 w.print();//print没有重写的方法 2下转型把已经上转型的父类对象赋值给子类对象。他的原理就是把已经上转型后的父类对象所对应的原来的子类对象在赋值给子类对象。此时这个对象能够调用的方法是自身的方法继承来得方法和已经重写过得方法。 注意下转型需要通过显示的类型转换。如People pp (People) w; 注意C#中只支持单继承一个类只能有一个直接的父类。 抽象类是类的一种特殊类他没有构造函数不可以创建对象。他的书写格式如 [访问修饰符] abstract class 类名 { //拥有了普通类出构造函数外的任何东西 //还可以有抽象函数 } sealed关键字如果sealed修饰的是类则这个类是无法被继承不能当父类如果sealed修饰方法则子类是无法重写这个方法的。 interface接口是为了解决多继承的问题而诞生的一种特殊的“类”接口里面只能写方法的定义和属性的定义。在接口中的方法定义前面不能含有public子类在实现接口的方法是不能使用override关键字。他的书写格式如 pubilc interface 接口名 { } 注意:如果一个类同时要继承类也要实现结构那么父类要写在前面接口在后。 protected关键字由protected关键字修饰的变量和方法只能在本类和子类中去使用不能通过对象来访问。 namespace命名空间是为了解决重名的问题,方便管理类而产生的命名空间只能够放类接口枚举结构体委托 而不能有方法变量的。命名空间是可以嵌套的命名空间于物理路径没有关系只和逻辑上有关系。他的书写格式如 namespace 名字{ } enum枚举把有限的元素放在一起。使用字母代替数字标示的含义。枚举是一个值类型。 下面是一个很容易理解的继承例子他帮助我很明了的理解C#的继承关系 using System;
public class StudyExtend1
{public static void Main(){People p new People(ss);p.Test();p.TaiJi(); }
}
public class WuDang
{private string name;public WuDang(){}public WuDang(string name){Console.WriteLine(Im First!);}public WuDang(int age){Console.WriteLine(Im First!);}public WuDang(string name,int age){}public string Name{get{return this.name;}set{this.name value;}}public void Taiji(){Console.WriteLine(this.name);Console.WriteLine(this.GetType());}
}
//People继承了武当
public class People : WuDang
{public People(string name):base(ss,67){Console.WriteLine(Im Second!);}public void Test(){base.Taiji();base.Name ss;}} 转载于:https://www.cnblogs.com/lan-net/archive/2012/07/29/2614344.html