静态非静态区别;
using System;
using System.Collections.Generic;
using System.Text;
namespace _04面向对象03静态与非静态的区别
{
// 先添加public;如果添加static就是静态类,如果不添加static就是非静态类。
// 静态和非静态的区别:
// 1、在非静态类中,既可以有非静态成员,又可以有静态成员。静态类中,只能包含静态成员。
// 2、在调用实例成员的时候,需要使用对象名.实例成员;
// 3、在调用静态成员名的时候,需要使用类名.静态成员名
// 4、静态方法如此,静态字段也是如此。
// 就记住一句话:静态成员必须通过类名调用,而非静态成员(实例成员)通过使用对象名调用。
// 静态函数中,只能访问静态成员,不允许访问实例成员。
// 实例方法中,既可以使用静态成员,也可以使用实例成员。
// 动态的都可以,静态的只能访问静态的。
// 非静态类中静态、动态成员都可以有,静态类中只能包含静态成员。
// 静态类无法创建实例化对象。因为只能用类名调用,所以无法创建对象。
// 如何使用:
// 1)、如果你想让你的类当做一个“工具”类,可以考虑将类写成静态类。使用频率频繁,功能固定,经常使用。因为动态类需要实例化之后再调用。麻烦。
// 2)、静态类,在整个项目中,资源共享的。类是不占内存的。对象占内存。但是静态类例外,静态类本省占内存。
// 人为将内存分为五块,有三块,经常使用:堆,栈,静态存储区域。
// 完整的应用程序,有很多模块构成,比如QQ中,有邮箱,空间,微博,游戏等,进入每个界面不可能都需要输入密码:所以采用静态类;
// 一个项目中静态类越少占用资源越少;
// 释放资源:GC机制:Garbage Collection垃圾回收器。
// 只有在程序执行完之后,静态类才会释放资源。静态类,始终消耗资源。
public class Person
{
// 非静态成员;
public void M1()
{
Console.WriteLine("我是非静态的方法");
}
// 静态成员;
public static void M2()
{
Console.WriteLine("我是静态方法");
}
}
}
构造函数:
using System;
using System.Collections.Generic;
using System.Text;
namespace _04面向对象04构造函数
{
// 构造函数:帮助我们初始化对象(给对象的每个属性依次的赋值)。
// 构造函数是一个特殊的函数方法:
// 1、构造函数没有返回值,连void也不能写;
// 2、构造函数的名称,必须与类名一致;
// 类里面可以写:字段、属性、方法、构造函数;
public class Student
{
private string _name;
public string Name
{
get
{
return _name;
}
set { _name = value; }
}
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
private char _gender;
public char Gender
{
get { return _gender; }
set { _gender = value; }
}
private int _chinese;
public int Chinese
{
get { return _chinese; }
set { _chinese = value; }
}
private int _math;
public int Math
{
get { return _math; }
set { _math = value; }
}
private int _english;
public int English
{
get { return _english; }
set { _english = value; }
}
public void SayHello()
{
Console.WriteLine("我叫{0},我今年{1}岁了,我是{2}生", this.Name, this.Age, this.Gender);
}
public void ShowScore()
{
Console.WriteLine("我的总成绩是{0},平均成绩是{1}", this.Chinese + this.English + this.Math, (this.Chinese + this.English + this.Math) / 3);
}
}
}
静态方法是跟类绑定的。实例化无法调用静态方法。