C#面向对象(1)
C#面向对象
类:把一些系列东西,把他们的共同的属性和方法抽象出来,给他起一个名字就是XXX类。
对象:凡是能够看得见摸得着的东西就是对象,说白了就是某个类里面的一个具体的东西(成员)。
类:静态----属性 ,动态---功能
现实:先有对象在有类。
程序:先有类再有对象。
万物皆对象。
*面向对象编程:在程序中,一切运行的基本单位是对象。
在程序里面有且只能有一类包含Main方法,这个类称之为主类。
创建对象过程是:就是把类里面所有的东西赋值一份,放到对象的内存空间中。那么对象方式属性和方法是自己内存空间中的属性和方法。
一个类可以创建n个对象,那么n个对象之间是没有任何的关系,唯一是他们产生于一个类。
类名 对象名 = new 类名();
1)属性:对成员变量的一个封装,使得这个变量具有了读和写的权利。
(1)成员变量是私有类型,只能在类的内部使用。如果在类的外面使用,则应该把成员变量封装成属性。
public 类型 属性名
{
get{return 成员变量;}
set{成员变量=value;}
}
(2)属性都是用public来修饰。
2)访问修饰符
(1)public:共有的,在哪里都能够方法
(2)private:私有的,只能在类的内部使用,也就是对象的内存空间中使用。
*由private定义的变量和方法,对象不能够直接对其调用。但是可以通过间接来访问。
**对象===成员===实例 **成员的变量=实例的变量=对象的变量
3)成员方法
(1)成员方法=成员函数=成员功能
[访问修饰符] 返回值 函数名(参数列表)
{}
public void say()
{}
private void print()
{}
4)构造函数
(1)构造函数是用来创建对象的。构造函数开辟出一个内存空间,这个空间放在堆里面。此时,对象就指向了这个内存空间,然后类里面的东西复制到这个空间中。
(2)构造函数是一个特殊的函数,没有返回值。
[访问修饰符] 类名(构造函数名)(参数列表)
{}
(3)构造函数名必须和类名一样。
(4)构造函数除了用来创建对象之外,还起到以下作用:
**无论在什么情况下,必须显示定义一个空的构造函数。
5)函数的重载
(1)函数重载值得是函数可以具有相同的方法名,但是参数的类型,个数,顺序不一样的函数互为函数的重载。
(2)函数的重载是因为功能一样,但是处理的内容和方式不一样。
(3)函数的重载前提条件是函数必须在同一个类里面。
6)this关键字:this指的就是当前对象。
(1)使用this关键字可以使得参数见名知意,同时起到了成员变量和参数之间的区别。
**this关键字是多态的。
7)static关键字
(1)通过static关键字修饰方法,变量,属性都是属于类的。只能通过类来调用,不能通过对象来访问。
(2)凡是通过static关键字修饰的方法,只能够调用有static修饰的方法和变量。但是不能够直接调用成员的变量和方法。
(3)那么成员的方法可以直接的调用Static修饰的方法和变量。建议直接通过类名来访问Static修饰的变量和方法。
(4)static修饰的变量和方法在内存中只创建一次。直到程序退出,才会消失。
*是谁的谁调用。
8)readonly:只读关键字,有readonly修饰的变量不能够赋值。
9)新特性
(1)属性:可以直接写属性,而不需要成员变量,get和set也不需要实现。
(2)创建对象:在创建对象的时候,可以直接给属性赋值。 //People p = new People(){Name="",Age=90};
(3)通过var关键字来标示任何类型的变量,但是不是说就是若类型语言。但是,Var定义的变量只能够在方法里面使用。
(4)匿名对象:可以通过new 关键字来创建一个匿名对象,这个对象没有类型。属性可以随意定义
*匿名对象只能通过Var关键字定义的变量来接受。