当前位置: 首页 > 面试题库 >

一个类上有很多方法会增加该类对象的开销吗?

单于善
2023-03-14
问题内容

假设我正在使用一个类从数据库中带回项目,例如

class BankRecord {

public int id;
public int balance;

public void GetOverdraft() {
...
}
public void MakeBankrupt(){
...
}

}

现在,如果只有2种方法(如上)或100种方法(可能其中有些方法非常大),使用此方法的性能将会发生变化。

如果所有方法都放在每个对象上,则实例化数百个这些对象会更糟吗?这适用于c#/ java类型的语言,但是最好对所有语言都了解。

还是有一个单独的类,对这些对象执行所有操作,然后将对象保留为纯数据类,是一种好习惯?


问题答案:

创建对象实例时,运行时不会复制代码。创建实例时,仅会为成员字段分配内存中的空间。因此,除非有其他设计原因,否则不应创建“仅数据”类。

话虽这么说,还有其他一些最佳实践原因,您可能不想要具有多种方法的类(例如,上帝对象反模式)。



 类似资料:
  • 问题内容: 抽象类是否必须至少具有一个抽象方法? 问题答案: 这篇文章的主题和正文提出了两个不同的问题: 它应该至少有一个抽象成员吗? 是否需要至少一个抽象成员? #2的答案肯定是“否”。 #1的答案是主观的,是风格的问题。我个人会说是的。如果您的目的是防止实例化一个类(没有抽象方法),那么最好的方法是使用构造函数,而不是对其进行标记。

  • 如何创建具有整数和字符串输入类型的?如果我创建一个: 这将是一个类型。如果我将其创建为: 这将是类型。我如何创建一个,它可以接受整数和字符串输入类型?谢谢。

  • 我见过子类的构造器方法被用于具有超类类型的变量。例如: 是类型对象还是类型?由于类inherit from,因此它的方法可能比它的超类多。实例调用这些函数是否只能存在于中,而不能存在于中?在这种情况下,和可以互换吗?例如:

  • 这个子类重写了原始方法,而超类是一个抽象类。是否可以通过初始化为其子类的对象调用超类中的原始方法? 我想做的是: 我认识到上面的代码无法作为抽象类进行实例化,所以我尝试这样做:

  • 我有一个程序,它有一个超级类,个人和子类,学生,并试图根据他们的生日和名字来比较他们什么时候是平等的。我做对了,但是在我试图解决的提示下,我得到了一个错误,自动评分器是:“测试学生和学生是一样的,即使成绩不同”,预期结果是真的,但我总是得到错误。这个程序在比较人和学生时起作用,在比较人和人时起作用,而不是学生和学生,我不知道为什么。 主要类别: 超类: 子类:

  • 我是java新手,我正试图编写我的第一个“更大”的程序,包含几个类。我在类“CompetitionProgram”中创建了一个ArrayList并将其声明为private。 我的程序中需要这两个类(Event&ListOfEvents),这是需求之一。事件--它只是表示事件本身,比如事件名称和尝试次数(它是一个体育事件)。和ListOfEvents--它表示列表本身,并包含用于添加事件、删除事件和