抽象类和抽象方法
Abstract classes and abstract methods
嘿,我看了很多关于继承的视频。
只是有abstract classes这个概念,表示无法实现。
我知道你不能在游戏对象上使用抽象 class 但使用抽象 class 有什么作用?
抽象方法也可以只在抽象class中实现,为什么不能在抽象class中实现方法而只覆盖它?
我还阅读了一些关于采用 component<T>
的抽象方法的内容,但我还没有发现它的目的是什么希望你们中的一些聪明人能帮助一个困惑的程序员 :D
我认为阅读 Microsoft's article on Abstract Classes and Methods 会非常有帮助。您可以通过向 class 提供基本功能并从中继承来利用抽象 classes。
您还混淆了 implement
和 override
的一些措辞:您通过覆盖实现了一个抽象方法。
Component<T>
表示 class Component
与您定义的类型参数。这在 C# 中定义为 Generics。您将这些与基础 Unity3D classes 一起使用,例如 Component<GameObject>
或 GetComponent<GameObject>
.
抽象 classes 用于对共享 "master class" 建模,它本身永远不会被使用,但派生的 classes 将使用 data/functions.
例如说你的遗产是
Animal
Bird Mammal Reptile
在您的游戏中,您只会使用 Bird/Mammal/Reptile,因为它们是具体的动物模型,但它们都至少共享一些共同的代码。 Health、Hunger,可能会提供一些抽象函数,例如 Move(),它将在每个 subclass 级别上实现。
从工程的角度来看,这让您可以做一些奇特的事情,例如创建一个 array/vector 类型的动物,其中可以包含鸟类、哺乳动物和爬行动物。
假设我们有一个 Animal 类型的向量,每个子项有 1 个class。
然后我们可以做
foreach (Animal a in animals)
a.Move(100)
Birds/Mammals/Reptiles 都以不同的方式移动,但是因为我们有一个在基础层没有实现的抽象函数,我们的代码可以保证在继承树中的某个点实现它。
其他流行的例子是 Item 的抽象 class 和抽象函数 item.Use();物品可以是药水、卷轴、苹果(class 食物)。没关系,因为它们都共享相同的基本级别接口。
嘿,我看了很多关于继承的视频。 只是有abstract classes这个概念,表示无法实现。
我知道你不能在游戏对象上使用抽象 class 但使用抽象 class 有什么作用? 抽象方法也可以只在抽象class中实现,为什么不能在抽象class中实现方法而只覆盖它?
我还阅读了一些关于采用 component<T>
的抽象方法的内容,但我还没有发现它的目的是什么希望你们中的一些聪明人能帮助一个困惑的程序员 :D
我认为阅读 Microsoft's article on Abstract Classes and Methods 会非常有帮助。您可以通过向 class 提供基本功能并从中继承来利用抽象 classes。
您还混淆了 implement
和 override
的一些措辞:您通过覆盖实现了一个抽象方法。
Component<T>
表示 class Component
与您定义的类型参数。这在 C# 中定义为 Generics。您将这些与基础 Unity3D classes 一起使用,例如 Component<GameObject>
或 GetComponent<GameObject>
.
抽象 classes 用于对共享 "master class" 建模,它本身永远不会被使用,但派生的 classes 将使用 data/functions.
例如说你的遗产是
Animal
Bird Mammal Reptile
在您的游戏中,您只会使用 Bird/Mammal/Reptile,因为它们是具体的动物模型,但它们都至少共享一些共同的代码。 Health、Hunger,可能会提供一些抽象函数,例如 Move(),它将在每个 subclass 级别上实现。
从工程的角度来看,这让您可以做一些奇特的事情,例如创建一个 array/vector 类型的动物,其中可以包含鸟类、哺乳动物和爬行动物。
假设我们有一个 Animal 类型的向量,每个子项有 1 个class。
然后我们可以做
foreach (Animal a in animals)
a.Move(100)
Birds/Mammals/Reptiles 都以不同的方式移动,但是因为我们有一个在基础层没有实现的抽象函数,我们的代码可以保证在继承树中的某个点实现它。
其他流行的例子是 Item 的抽象 class 和抽象函数 item.Use();物品可以是药水、卷轴、苹果(class 食物)。没关系,因为它们都共享相同的基本级别接口。