关于OOP的问题

Pri*_*pal 4 java oop

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是这个问题的答案.只是想知道其他选项是否也是如此.

Jon*_*eet 5

好吧,我会用这些术语来看待它:

  • 封装:通过允许直接访问该color 字段,Car该类公开了一个实现细节.Ignacio已经表明他不会将这种类型的违规视为封装,而是数据隐藏 - 我自己对"封装"一词的看法是它包含数据隐藏.这只是为了说明如何以不同的方式使用这些词.

  • 多态性:通过名称判断,MyCar并且Car可能实现公共接口或具有公共基类.至少,给出的类不能以多态方式使用.

  • 抽象:我认为使用char颜色的抽象是不合适的.这是否违反抽象取决于你所说的"抽象违规".