using System;
using System.Collections.Generic;
using System.Text;
namespace 继承_static_结构体_2048核心类
{
class Student : Person
{
//prop +tab +tab 自动属性快捷生成
///
/// 成绩
///
// 实例成员属于 对象 静态成员属于 类
public int Score { get; set; }
//每个对象都存储一份
public int InstanceCount;
//静态字段 仅仅存储一份 所有对象共享 常驻内存中
public static int StaticCount;
private Random random;
private int[] arr;
//实例构造函数:提供创建对象的方式,初始化类的实例数据成员
//
public Student()
{
random = new Random();
arr = new int[5];
InstanceCount++;
StaticCount++;
}
//静态构造函数 不需要访问修饰符 都可以访问
//作用:初始化类的静态数据成员
//执行时机:类加载时调用一次
static Student()
{
//InstanceCount++;//”非静态字段 要求 对象引用 ” 静态代码块只能访问静态成员
StaticCount++;
}
//静态方法
public static void Fun1()
{
//Console.WriteLine(InstanceCount);//静态方法只能访问静态成员
}
public void Fun2()
{
Console.WriteLine(InstanceCount);// 通过引用(对象 / 实例)调用实例方法,都会自动传递(对象 / 实例的)引用
//Console.WriteLine(this.InstanceCount);//所以可以访问 InstanceCount 实例成员
Console.WriteLine(StaticCount );//但实例(对象)方法可以访问静态成员(类)
}
//静态类
/*不能实例化,只能包含静态成员
* 静态类不能被继承,但非静态类的方法,属性都可以被继承
*/
/* 静态适用
* 利:单独空间存储,所有对象共享,可直接被类名调用
* 弊:静态方法中只能访问静态成员,共享数据被多个对象访问时会出现并发。
* 适用场合:
* 1.所有对象需要共享的数据。
* 2.在没有对象是就要访问成员。
* 3.工具类适合做静态类(常用,不需要过多数据)。
* 如类 Math.方法
* unuty中有静态类Random
* Random.randuoRange(1,101); (randomRange()静态类Random的静态方法。
* 简易与.Net中
* Random r = new Random();
* random.Next(1,101);(Next()实例(对象)方法。
*
*/
//
}
}