前言
我们一般在学习的时候往往写一个函数时,里面需要传入参数,此时的参数往往都是自己类里的字段属性或者是临时变量。然而在写项目时发现,一般会使用设计好的模式,框架来写。此时发现函数的作用,和使用方式是多种多样的,因为公有函数会被其他类调用了。
这里来记录一些遇到过的函数巧妙的写法和使用
给自己类的字段赋值
一般来说,写公有方法,是可以给其他类使用的,但是有时候也可以说让其他类使用,来帮自己赋值
- 在其他类使用,来为自己的类中的字段赋值,即函数的参数是其他类(或父类)中的字段、成员
如:当父类和子类都有一个私有id字段,在父类创建一个子类时,子类需要id字段赋值,此时子类写个公有方法SetID(int id){this.ID = id;},父类获取这个子类对象让子类对象调用这个方法,在参数列表里面传入自己的id值给子类,从而确保父类id与子类id值是一致的
//父类和子类都有一个私有id字段
//父类
void Start(){
int count = YoungInfos.instance._shopInfos.Count;
for (int i = 0; i < count; i++) {
//使用NGUI工具创建物体
GameObject go = NGUITools.AddChild (grid.gameObject, _shopItem);
grid.AddChild (go.transform);
int id = YoungInfos.instance._shopInfoKeys[i];
go.GetComponent<YounpShopItem> ().SetID (id);
}
}
//子类公有方法
public void SetID(int id) {
this.ID = id;
}
让父类id和子类id值一致有什么好处?
这里解决了动态创建物体对象而要确定是哪个具体id的问题。我们动态创建了一个物体对象,但是这个物体对象的字段没有初始化id,也就无法根据id来做出相应的操作。
而父类的id往往从数据控制类中的容器里获取得到,如父类对象是UI层的一个物体对象,要从商品控制信息类容器中找到有商品的所有id,然后把这些id给动态创建的子类对象字段赋值。
此时新创建的子类对象有了id,就可以根据从商品信息控制类中的容器里找到某个Item类对象,根据这个item类里的信息来做相应的(UI)显示操作
总结
上面是通过父类和子类的关系为例,即父类调用子类的公有方法,给子类私有字段赋值