正在加载图片...
递时。例如 Birthday bDay new Birthday (this) 5.3.6数据隐藏 pubic void tomorrow()i this da ublic class DateUser t public static void main(String args[])t Date my date new My Date ()i Mydate. day 21;//i11ega1 在 My Date类的day, month,year声明中使用关键字 private,使从除了在 My Date类本身的方法以外的任何代码中访问 这些成员成为不可能。因此,给 My Date类指定一个声明,下述代码是非法的 public class DateUser t public static void main(String args[])( My Date d= new My d day 21; //illegal! 防止直接访问数据变量看起来奇怪,但它实际上对使用 MyDate类的程序的质量有极大的好处。既然数据的单个项是 不可访问的,那么唯一的办法就是通过方法来读或写。因此,如果要求类成员的内部一致性,就可以通过类本身的方法 来处理。 思考一下允许从外部对其成员进行自由访问的 MyDate类。代码做如下工作将是非常容易的 MyDate d= new My Date () d day = 32: / invalid day d. month= d day = 30: / plausible but wrong d month d month l; // omit check for wrap round 警告一这些和其它类似的赋值导致了在 My Date对象字段中无效的或不一致的值。这种情形是不可能马上作为问题暴露出 来的,但肯定会在某个阶段终止程序 如果类的数据成员没有暴露(被封装在类里),那么,类的用户会被迫使用方法来修改成员变量。这些方法能进行有 效性检查。考虑将下述方法作为 MyDate类的一个部分 ublic void setDay (int targetDay)(92 递时。例如: Birthday bDay = new Birthday (this); 5.3.6 数据隐藏 数据隐藏 public class Date { private int day, month, year; pubic void tomorrow(){ this.day = this.day +1; // wrap around code… } } public class DateUser { public static void main(String args[]) { Date mydate = new MyDate (); Mydate.day = 21; //illegal! } } 在 MyDate 类的 day,month,year 声明中使用关键字 private,使从除了在 MyDate 类本身的方法以外的任何代码中访问 这些成员成为不可能。因此,给 MyDate 类指定一个声明,下述代码是非法的: public class DateUser { public static void main(String args[]) { MyDate d = new MyDate (); d.day = 21; // illegal! } } 防止直接访问数据变量看起来奇怪,但它实际上对使用 MyDate 类的程序的质量有极大的好处。既然数据的单个项是 不可访问的,那么唯一的办法就是通过方法来读或写。因此,如果要求类成员的内部一致性,就可以通过类本身的方法 来处理。 思考一下允许从外部对其成员进行自由访问的 MyDate 类。代码做如下工作将是非常容易的: MyDate d = new MyDate (); d.day = 32; // invalid day d.month = 2; d.day = 30; // plausible but wrong d.month = d.month + 1; // omit check for wrap round 警告—这些和其它类似的赋值导致了在 MyDate 对象字段中无效的或不一致的值。这种情形是不可能马上作为问题暴露出 来的,但肯定会在某个阶段终止程序。 如果类的数据成员没有暴露(被封装在类里),那么,类的用户会被迫使用方法来修改成员变量。这些方法能进行有 效性检查。考虑将下述方法作为 MyDate 类的一个部分。 public void setDay(int targetDay) {
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有