UNITY零基础学习 month1 day15
C#集合 List<数据类型>
泛型集合,本质是集合
List<User> list02 = new List<User>();
list02.Add(u1);
字典集合
Dictionary<string, User> dic = new Dictionary<string, User>();
dic.Add("abc", new User("abc", "123"));
User searchResult = dic["abc"];
集合与数组的使用区别
- 集合用于不定数量的添加与高效寻找时
- 数组为定长,寻找需要从头开始遍历
继承
//prop +tab +tab
//会自动生成
public int MyProperty{get; set;}
继承条件:
- 多个类有共有代码
- 多个类他们从属一个概念
class Student : Person
这里Student是子类,Person是父类,子类继承自父类。子类的实例对象可以调用父类的成员,但父类的实例对象不能调用子类的成员
如果父类成员的修饰词为public,则所有人都可以调用
如果为private,则只有父类可以调用
如果为protected,则父类和子类都能调用
protected int a;
父类型的引用 指向 子类的对象
只能使用父类成员
Person person01 = new Student();
如果需要访问该子类成员,需要强制类型转换
Student stu02 = (Student)person02;
Teacher和Student并非是子类父类关系,如果强制类型转换,在写代码时并不会报错,但是在运行时会报错
Teather teacher02 = person02 as Teacher;
用as来做判断,若无父子类关系则抛出异常
static
静态成员变量
- 使用static关键字修饰的成员变量
- 静态成员变量属于类,类被加载时初始化,且只有一份
- 实例成员变量属于对象,在每个对象被创建时初始化,每个对象一份
- 特点:存在优先于对象,被所有对象所共享,常驻内存
静态构造函数
- 初始化类的静态数据成员
- 仅在类被加载时执行一次
- 不允许使用访问修饰符
//实例构造函数作用:提供创建对象的方式,初始化类的实例数据成员
public Student(){}
//静态构造函数作用:初始化类的静态数据成员
//执行时机:类加载时调用一次
static Student(){}
实例构造函数的初始化在实例构造函数内,静态构造函数的初始化在静态构造函数中
private Random random;
private int[] arr;
public Student()
{
random = new Random();
arr = new int[1];
}
“非静态字段 要求 对象引用” ==》静态代码块,只能访问静态成员
静态方法
- 通过引用调用实例方法时,会隐式的传递对象引用,以便在方法内部可以正确访问该对象成员变量
- 通过类名调用静态方法时,因为没有具体对象,所以在static方法中不能访问实例成员
静态类
- 使用static关键字修饰的类
- 不能实例化,只能包含静态成员
- 静态类不能被继承,但是静态方法、属性都可以被继承
适用性
利:单独空间存储,所有对象共享,可直接被类名调用
弊:静态方法中只能访问静态成员,共享数据被多个对象访问会出现并发
适用场合:
- 所有对象需要共享的数据
- 在没有对象前就要访问成员
- 工具类适合做静态类(常用,不需要过多数据)