Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 本课程中使用的OOPs概念_C#_Java_Class_Oop - Fatal编程技术网

C# 本课程中使用的OOPs概念

C# 本课程中使用的OOPs概念,c#,java,class,oop,C#,Java,Class,Oop,考虑一个简单的类a class A { int id=0; public int getId() { return this.id++; } } 问题是以上课程中使用的所有OOPS概念是什么? 我问面试官,他所说的OOPS概念是什么意思,回答是一般OOPS概念,如继承、多态性等, 我回答说继承不在上面的代码中(没有可派生的基类),在那次运动中我能想到的唯一答案是: 变量隐藏,因为私有变量id只能通过getId方法访问 你们有什么抓到的吗 编辑: c#会是什

考虑一个简单的类
a

class A
{
   int id=0;
   public int  getId()
   {
      return this.id++;
   }
}
问题是
以上课程中使用的所有OOPS概念是什么?

我问面试官,他所说的OOPS概念是什么意思,回答是
一般OOPS概念,如继承、多态性等,

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

变量隐藏
,因为私有变量
id
只能通过
getId
方法访问

你们有什么抓到的吗

编辑:

c#会是什么?在java中,默认修饰符为
internal

如果对c#提出同样的问题,会有什么变化吗?

更好的问题应该是关于所有违反的良好编程实践

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


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

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

class A
{
  private int id=0;
   public int  getId()
   {
      return this.id++;
   }
}
getId()
为例,它看起来像是一个简单的getter,但实际上修改了类的状态。它应该被称为
generateId()
getNextId()
是可以接受的

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

class A
{
  private int id=0;
   public int  getId()
   {
      return this.id++;
   }
}
它只遵循ADT的抽象,但不幸的是它没有封装。当一个变量是非私有的并且它有assessor方法时,我们不能将其称为封装,因为它没有隐藏数据。我们可以说,只有当它在id上有私有访问说明符时,它才遵循了封装


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

封装是我看到的唯一概念there@user1233963:那么,你是说变量隐藏的东西?(
id
被封装了吗?)这里没有
封装
,默认为
id
的访问修饰符。这里的原则是封装。OOP并不要求字段是专门的
private
(尽管在实践中通常是这样),它只要求从类外部限制对字段的访问。在大多数OO语言(至少是C#和Java)中,默认情况下,所有类都扩展了一些基本
对象。所以有技术上的继承(以及一些继承的方法)。我可能会在回答中提到它,尽管我不确定如果我问的话我会数到多少。。。哦,看起来还没有人提到它,但是“getter”在多线程上下文中的行为会很奇怪。封装是我看到的唯一概念there@user1233963:那么,你是说变量隐藏的东西?(
id
被封装了吗?)这里没有
封装
,默认为
id
的访问修饰符。这里的原则是封装。OOP并不要求字段是专门的
private
(尽管在实践中通常是这样),它只要求从类外部限制对字段的访问。在大多数OO语言(至少是C#和Java)中,默认情况下,所有类都扩展了一些基本
对象。所以有技术上的继承(以及一些继承的方法)。我可能会在回答中提到它,尽管我不确定如果我问的话我会数到多少。。。哦,看起来还没有人提到它,但是“getter”在多线程上下文中的行为会很奇怪。谢谢你的观点。我现在注意到的另一件事是:
getNextId
不是一个公认的名称,因为,您调用了多少次
getId
函数,它将返回1I,我也标记了
C
,以找出与该语言功能相关的内容。因为,在C#中,默认情况下,类的所有成员都是私有的。谢谢你的观点。我现在注意到的另一件事是:
getNextId
不是一个公认的名称,因为,您调用了多少次
getId
函数,它将返回1I,我也标记了
C
,以找出与该语言功能相关的内容。因为在C#中,默认情况下,类的所有成员都是私有的。