此类中使用的 OOPs 概念



考虑一个简单的类A

class A
{
   int id=0;
   public int  getId()
   {
      return this.id++;
   }
}

问题是What are all the OOPS concepts used in the above class?.

我问面试官,他所说的OOPS Concepts是什么意思,回答是general OOPS concepts like inheritance, polymorphism, etc, etc.,

回答说继承不在上面的代码中(没有基类可以派生),我能想到的唯一答案是:

variable-hiding因为私有变量id只能通过 getId 方法访问。

你们有什么东西

吗?

编辑:

在 C# 中会是什么?在 java 中,我们有默认修饰符作为 internal .如果对 c# 提出相同的问题,有什么变化吗?

一个更好的问题是关于所有违反的良好编程实践。

getId()为例,它看起来像是一个简单的getter,但实际上修改了类的状态。它应该被称为generateId(); getNextId()本来是可以接受的。

封装(是的,变量隐藏的东西)也被违反了,因为id具有内部的,而不是私有的可见性,这使得它对同一包中的其他类可见,没有充分的理由。

class A
{
  private int id=0;
   public int  getId()
   {
      return this.id++;
   }
}
好吧,它

只遵循抽象作为 ADT,但不幸的是它没有封装。 当变量是非私有的并且它具有评估器方法时,我们不能将其称为封装,因为它没有隐藏数据。我们可以说,只有当它在 id 处有私有访问说明符时,它才遵循封装。

最新更新