我终于弄清楚了阶级派生是如何运作的......而且它的工作方式与我原先想的完全相反。
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我将如何制作此特定代码:
Q2我如何制作这样的东西:
public class Class5 : Class4, Class3, Class2, Class1{
public void Function5(){
Debug.Log("5");
}
}
因此Class4无法读取Class 3,... 但只有Class 5可以读取所有其他类?
答案 0 :(得分:1)
您可能正在寻找所有protected
方法的Function1..Function4
而不是public
,因此只有Class5
才能使用1-4 ...
请注意,在C#类中只能有一个基类,如Class5:Class4 {}
(Class5
仍将看到其所有基类的受保护函数1-4。)