静态类及实例类
1.类中包含:字段;属性和方法。
2.面向对象意在:写出通用的代码,屏蔽差异
对象必须是看得见,摸得着的具体物体。--没有具体,则不能成为对象
万物皆对象
我们把具有相同属性和相同方法的对象抽象为类。
对象是根据类创建出来的
实例类是不占内存的,对象要占内存
3.属性的作用就是保护字段,对字段的赋值和取值进行限定。
4.属性的本质:及两个方法:即get,set。既有 get,又有set,称为可读可写属性。有的时候只有get或set。
5.当创建好类的对象后,需要给这个对象的每个属性进行赋值, 称为对象初始化。
6.静态和非静态的区别:实例类不占内存,实例化对象时才会在堆上分配内存。
静态类在整个项目中实现资源共享,静态类本身就在静态存储空降占据一块内存。
1)在非静态类中,即可以有静态成员,也可以有非静态成员(实例成员)。
2)调用非静态成员,对象.实例成员名。
3)在调用静态成员的时候,类名.静态成员名。
总结:静态成员必须使用类名去调用,非静态成员使用对象名去调用。
1)静态方法中只能使用静态成员,不能使用实例成员。
2)实例方法中既可以使用静态成员,也可以使用非静态成员。
3)静态类中只能有静态成员,不能有非静态成员
4)静态类不能实例化对象。因为静态类只能包含静态成员,而静态成员只能用类名调用,不能使用对象名调用,故不需要实例化静态类,也不能将静态类对象实例化。
7.静态类和实例类的使用
1)如果你想要你 的类当做一个“工具类”去使用,这个时候可以考虑将类写成静态类。
2)实例类不占内存,实例化对象时才会在堆上分配内存。
3)静态类在整个项目中实现资源共享,静态类本身就在静态存储空间占据一块内存。(堆,栈,静态存储空间)
4)只有应用程序全部结束之后,静态类才释放资源。
8.构造函数
通过构造函数给类的对象属性初始化,通过类属性给类中的字段初始化。
作用:帮助我们初始化对象(给对象的每个属性一次赋值)
1)构造函数没有返回值,连void也不能写
2)构造函数名和类名必须一样。
3)构造函数的访问修饰符必须是public,否则不能调到构造函数进行初始化。
4)创建对象的时候,会自动的调用构造函数。
**5)类中会有一个默认的无参数的构造函数,若在定义构造函数(无论是否有参数),则创建对象是,默认的无参的构造函数都不能被调用。
9.new关键字的作用
person zsPerson = new person();
1)在内存中开辟一块空间
2)在开辟的空间中创建对象
3)调用对象的构造函数进行初始化对象。
:base()关键字是在父类中申明了有参数构造函数,创建子类对象时,不能调用父类中默认无参构造函数,故需要在子类构造函数中使用:base()显示调用父类中的有参构造函数,进行初始化。
10.this关键字
作用:
1)代表当前对象
2)在同一个类中显示的调用构造函数 :this()
主要是作用与同一个类中,一个构造函数显示调用另一个构造函数。
public Student(string name, char gender, int age, int chinese, int match, int english)
{
Name = name;
Gender = gender;
Age = age;
Chinese = chinese;
Match = match;
English = english;
}
//在下面这个构造函数中调用上面这个构造函数实现对象实例化public Student(string name , int chinese ,int match , int english):this(name ,'女' ,12 ,chinese ,match ,english)
{
}
11.析构函数在程序执行结束的时候,调用析构函数进行释放内存。
6.静态和非静态的区别:实例类不占内存,实例化对象时才会在堆上分配内存。
静态类在整个项目中实现资源共享,静态类本身就在静态存储空降占据一块内存。
1)在非静态类中,即可以有静态成员,也可以有非静态成员(实例成员)。
2)调用非静态成员,对象.实例成员名。
3)在调用静态成员的时候,类名.静态成员名。
总结:静态成员必须使用类名去调用,非静态成员使用对象名去调用。
1)静态方法中只能使用静态成员,不能使用实例成员。
2)实例方法中既可以使用静态成员,也可以使用非静态成员。
3)静态类中只能有静态成员,不能有非静态成员
4)静态类不能实例化对象。因为静态类只能包含静态成员,而静态成员只能用类名调用,不能使用对象名调用,故不需要实例化静态类,也不能将静态类对象实例化。
7.静态类和实例类的使用
1)如果你想要你 的类当做一个“工具类”去使用,这个时候可以考虑将类写成静态类。
2)实例类不占内存,实例化对象时才会在堆上分配内存。
3)静态类在整个项目中实现资源共享,静态类本身就在静态存储空降占据一块内存。(堆,栈,静态存储空间)
4)只有应用程序全部结束之后,静态类才释放资源。
8.构造函数
通过构造函数给类的对象属性初始化,通过类属性给类中的字段初始化。
作用:帮助我们初始化对象(给对象的每个属性一次赋值)
1)构造函数没有返回值,连void也不能写
2)构造函数名和类名必须一样。
3)构造函数的访问修饰符必须是public,否则不能调到构造函数进行初始化。
4)创建对象的时候,会自动的调用构造函数。
**5)类中会有一个默认的无参数的构造函数,若在定义构造函数(无论是否有参数),则创建对象是,默认的无参的构造函数都不能被调用。
9.静态类中只能有静态成员,不能有非静态成员;静态类中的构造函数不能加访问修饰符。静态类中的构造函数在静态类调用其中的成员之前,就已经初始化了,而非静态类,则是在实例化对象的时候调用构造函数。不管静态类调用几次其中的成员,都只执行一次构造函数的调用。