public class Car
{
public char color;
public char getColor()
{
return color;
}
public void setColor(char color)
{
this.color = color;
}
}
public class MyCar
{
private Car car = null;
public MyCar()
{
this.car = new Car();
car.color = 'R';
}
}
Run Code Online (Sandbox Code Playgroud)
上述代码违反了哪个OOPS原则?
•抽象•封装•多态性•以上都不是
我知道Encapsulation是这个问题的答案.只是想知道其他选项是否也是如此.
好吧,我会用这些术语来看待它:
封装:通过允许直接访问该color 字段,Car该类公开了一个实现细节.Ignacio已经表明他不会将这种类型的违规视为封装,而是数据隐藏 - 我自己对"封装"一词的看法是它包含数据隐藏.这只是为了说明如何以不同的方式使用这些词.
多态性:通过名称判断,MyCar并且Car可能实现公共接口或具有公共基类.至少,给出的类不能以多态方式使用.
抽象:我认为使用char颜色的抽象是不合适的.这是否违反抽象取决于你所说的"抽象违规".