UNITY零基础学习 month1 day16

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"];

集合与数组的使用区别

  1. 集合用于不定数量的添加与高效寻找时
  2. 数组为定长,寻找需要从头开始遍历

继承

//prop +tab +tab
//会自动生成
public int MyProperty{get; set;}

继承条件:

  1. 多个类有共有代码
  2. 多个类他们从属一个概念
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关键字修饰的类
  • 不能实例化,只能包含静态成员
  • 静态类不能被继承,但是静态方法、属性都可以被继承

适用性

利:单独空间存储,所有对象共享,可直接被类名调用
弊:静态方法中只能访问静态成员,共享数据被多个对象访问会出现并发

适用场合:

  1. 所有对象需要共享的数据
  2. 在没有对象前就要访问成员
  3. 工具类适合做静态类(常用,不需要过多数据)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值