我正在创建一个基于网格的游戏。
我需要实现一组在网格内随机定位的障碍。
我创建了一个抽象类ALifeForm
,它包含网格中每个项目的常用方法。显然,抽象类无法初始化,因此我打算创建一个新的类AObstacle
,它将扩展ALifeForm
。
唯一的问题是,我的AObstacle
课程并不专业。它需要的所有方法都在ALifeForm
之内。
我可以有一个空课吗? 这是不好的编程习惯吗?如果是这样,我可以实现什么呢?
答案 0 :(得分:7)
当然......
class AObstacle { }
(加上你正在使用的任何继承模型。)没有什么能阻止你这样做。
请记住,类并不是您正在定义的事情。 类型是。该类只是用于描述类型的语言/语法结构。如果所描述的类型除了继承模型之外没有任何属性或操作,那么就没有别的东西可以添加到它。
虽然你 添加了一件事。你给它一个名字。它听起来并不多,但定义具有特定名称的语义概念(特别是在静态类型环境中)非常重要。您的类型现在具有除系统中其他类型之外的身份。如果以后添加了某些内容,则可以在不进行重构和更改的情况下添加它们。
答案 1 :(得分:0)
要做到这一点,你不需要有一个抽象类和一个扩展它的类,或者一个空类(也可能)。
第一种方式:
你只需要实现两个类:包含你需要使用的方法和变量的类,以及包含你的第一个类的实例的第二个calss:
public class A{
public void firstMethod(){
//do your stuff here
}
....
}
public class B{
public static void main(String[] args) {
A a=new A(); //instantiate your class here
a.firstMethod();// then just use its methods
}
}
因为如果你实现了一个扩展抽象类的类,它应该实现它的所有方法。
第二种方式:
你的第一堂课不应该是抽象的,第二堂课可以扩展它并使用它的所有方法,并有其特定的方法