仮想抽象インターフェース
使わなかったらすごい忘れそう
interface インターフェース
- abstract 抽象
virtual 仮想
以下大体の使い方
public interface IBaseClass { int Level { get; } void SetLevel(int level); } public abstract class BaseClass : IBaseClass { public int Level { get; private set; } public void SetLevel(int level) { Level = level; } protected virtual string Path { get; private set; } protected abstract string Name { get; } public virtual void TestVirtual() { Debug.Log("TestVirtual"); } public abstract void TestAbstract(); } public class SuperClass : BaseClass { protected override string Path { get { return "Path"; } } protected override string Name { get { return "Name"; } } public override void TestVirtual() { base.TestVirtual(); Debug.Log("TestSuperVirtual"); } public override void TestAbstract() { Debug.Log("SuperAbstract"); } } public class TestClass { public TestClass() { //BaseClass baseClass = new BaseClass(); // ←抽象クラスはインスタンス作成できない。 SuperClass superClass = new SuperClass(); BaseClass baseClass = superClass; //これはできる IBaseClass baseInterface = superClass; //これもできる //interfaceで定義したなら派生クラスでもつかえる var level = baseInterface.Level; level = baseClass.Level; level = superClass.Level; baseInterface.SetLevel(level); baseClass.SetLevel(level); superClass.SetLevel(level); //baseInterface.TestVirtual();//interfaceでは定義されていないのでできない baseClass.TestVirtual();//BaseClassでは定義されているので使える superClass.TestVirtual();//SuperClassでoverrideしたMethodを定義している場合、そっちを使う baseClass.TestAbstract();//baseClassに代入されているSuperClassのMethodが走る superClass.TestAbstract();//同様 } }