如何切换类嵌套?

时间:2014-02-08 03:23:50

标签: c# class unity3d subclass nested

我终于弄清楚了阶级派生是如何运作的......而且它的工作方式与我原先想的完全相反。

using UnityEngine;
using System.Collections;

public class TestScript : MonoBehaviour {
    Class5 A = new Class5();
    Class1 B = new Class1();
    void Start(){
        A.Function5(); // 5
        A.Function1(); // 1
        B.Function5(); // ERROR `Class1' does not contain a definition for `Function5' and no extension method `Function5' of type `Class1' could be found (are you missing a using directive or an assembly reference?)
        B.Function1(); // 1
    }
}

public class Class1{
    public void Function1(){
        Debug.Log("1");
    }
}
public class Class2 : Class1{
    public void Function2(){
        Debug.Log("2");
    }
}
public class Class3 : Class2{
    public void Function3(){
        Debug.Log("3");
    }
}
public class Class4 : Class3{
    public void Function4(){
        Debug.Log("4");
    }
}
public class Class5 : Class4{
    public void Function5(){
        Debug.Log("5");
    }
}

Q1我将如何制作此特定代码:

  • 无法访问1级,2级,3级,4级
  • 但只能访问Class5,而它可以访问其他类中的所有其他函数。

Q2我如何制作这样的东西:

public class Class5 : Class4, Class3, Class2, Class1{
    public void Function5(){
        Debug.Log("5");
    }
}

因此Class4无法读取Class 3,... 只有Class 5可以读取所有其他类?

1 个答案:

答案 0 :(得分:1)

您可能正在寻找所有protected方法的Function1..Function4而不是public,因此只有Class5才能使用1-4 ...

请注意,在C#类中只能有一个基类,如Class5:Class4 {}Class5仍将看到其所有基类的受保护函数1-4。)