封装
如何理解面向对象这篇文章中,提到所谓的封装就是 “功能给你做好了” 你不必理解它是怎怎么写出来的,直接使用就即可。
但你要清楚一点、那就是说这句话是给使用者说的,作为开发者,封装就得我们来干。
那么作为开发者,我们应该如何去封装呢?其实你应该反过来问,使用者应该怎样去使用,这样一想会简单很多,作为使用者,自然是希望越简单越好,也就是说一些复杂的东西,我们不应该让使用者去操作,那也是说我们应该把复杂的以及不必要的参数给封死,不让使用者去操作。
为什么不让使用者去操作?
因为使用者往往是不太专业的,如果暴漏太多的接口给他们,就很可能出现一些稀奇古怪的问题,好比一个不会做水煮鱼的,如果让他做他就很可能做不好,那怎么办? 给他买一包水煮鱼的调料让他直接放锅里就好了! 这样就减少了不必要的麻烦。我们封装程序也是一样,把复杂的代码封死不让操作者去操作,以免出错。
class Average{
private int[] fractions = new int[3]; //分数
private int average = 0; //平均分
public void setFraction(int[] fraction){
fractions = fraction;
}
public double getAverage(){
for(int cell:fractions){
average += cell;
}
return (double) (average / fractions.length);
}
}
class app{
public static void main(String[] args){
int[] a = {50,40,50};
Average average = new Average();
average.setFraction(a); //设置分数
double n = average.getAverage(); //获取平均分
System.out.println(average.average); //报错
System.out.println(n); //46.0
}
}
这里我们之所以将分数和平均分设置成私有变量是为了防止使用者误操作,而且也不必让使用者知道有这么一个变量,只需要让使用者知道怎么去设置分数,和获取平均分就好了。
当然这只是一个很基础的封装,如果想封装出一个好的程序,还得多费一些心思
浙公网安备 33010602011771号