考虑一个简单的类A.
class A
{
int id=0;
public int getId()
{
return this.id++;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是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#被问到同样的问题,有什么改变吗?
一个更好的问题是关于所有违反的良好编程习惯.
Take getId(),看起来像是一个简单的getter,但实际上修改了类的状态.应该叫它generateId(); getNextId()本来可以接受的.
封装(是的,变量隐藏的东西)也被违反,因为它id具有内部的,而不是私有的可见性,使得它在同一个包中的其他类可见是没有充分理由的.
| 归档时间: |
|
| 查看次数: |
297 次 |
| 最近记录: |