【发布时间】:2014-02-08 08:04:08
【问题描述】:
如果我将 BaseClass 公开,它就会开始抱怨:
Assets/TestScript.cs(14,14): error CS0060: Inconsistent accessibility: base class `Class1' is less accessible than class `BaseClass'
首先我不明白为什么它抱怨 afaik 基类应该是你开始访问东西的地方
B 不能访问受保护的函数,这很好。
但是内部类是什么?
using UnityEngine;
using System.Collections;
public class TestScript : MonoBehaviour {
BaseClass B = new BaseClass();
Class2 A = new BaseClass(); // how can this even work and why does it work?
Class2 C = new Class2(); // Assets/TestScript.cs(7,28): error CS0144: Cannot create an instance of the abstract class or interface `Class2' // - WTH why?
void Start(){
B.BaseFunction(); // Base
B.Function1(); // Assets/TestScript.cs(10,19): error CS0122: `Class1.Function1()' is inaccessible due to its protection level
A.Function2(); // 2
}
}
internal class BaseClass : Class1 {
internal void BaseFunction(){
Debug.Log("Base");
}
}
internal abstract class Class1 : Class2{
protected void Function1(){
Debug.Log("1");
}
}
public abstract class Class2{
public void Function2(){
Debug.Log("2");
}
}
还是我只是做了一堆和 public 一样的东西?
但 ATM 最让我烦恼的是为什么它会起作用:
Class2 A = new BaseClass();
如果这不起作用
Class2 C = new Class2();
对不起,如果我对课程了解得太少,我在经过 1 年的编程后今天才开始学习这些课程。
【问题讨论】:
标签: c# class unity3d abstract-class internal