- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java语言面向对象高级程序设计
* 5.常量接口模式(续一) 若类Circle需要访问以上PI常量,第一种方式采用“MathConstants.PI”的形式,如下: import comsoft.math.*; public class Circle { private double r; public Circle(double r) { this.r = r; } public double getCircumference() { return 2 * r * MathConstants.PI; } public double getArea() { return r * r * MathConstants.PI; } } * 5.常量接口模式(续二) 第二种方式是让类Circle实现接口MathConstants,如下: import comsoft.math.*; public class Circle implements MathConstants { private double r; public Circle(double r) { this.r = r; } public double getCircumference() { return 2 * r * PI; } public double getArea() { return r * r * PI; } } * 5.常量接口模式(续三) 第二种方式使得Circle类继承了MathConstants接口的常量,因此在程序中可以直接引用常量名,无需指定MathConstants接口名,简化了编程。但该方式违背了面向对象的封装思想,会削弱系统的可维护性。假若类Circle被100个其他类访问,则这些类都会访问Circle.PI常量。若取消了MathConstants接口,则需要修改的不仅有Circle类,还有其他要访问Circle.PI常量的100个类。 为了弥补上述常量接口模式的不足,在JDK 1.5中引入了“import static”语句,它允许类A直接访问另一个接口B或类B中的静态常量,而不必指定接口B或类B的名字,而且类A无需实现接口B或者继承类B。如下面的类Circle通过“import static MathConstants.*”语句引入了接口MathConstants中的静态常量,则它无需实现接口MathConstants,就能直接访问PI 常量。 * 5.常量接口模式(续四) import static comsoft.math..MathConstants.*; class Circle { private double r; public Circle(double r) { this.r = r; } public double getCircumference() { return 2 * r * PI; } public double getArea() { return r * r * PI; } } import static语句既可以简化Circle类的编程,又能防止Circle类继承并公开MathConstants中的静态常量。 * 【教学小结】 1、面向对象高级程序设计 消息通信 访问控制(重点) 封装、继承、多态性(重点) 抽象类、抽象方法(重点) 接口(重点) 内部类、匿名类 2、Java修饰符 this、super、final、abstract、static等。 * 习题四 一、填空题 1.在面向对象系统中,消息分为( )和( )两类。 2.类的访问控制符有( )和( )两种,( )类具有跨包访问性而( )类不能被跨包访问。 3.类成员的访问控制符有( )、( )、( )和默认四种。 4.public类型的类成员可被( )、同一包中的( )和不同包中的 ( )的代码访问引用。 5.protected类型的类成员可被( )、同一包中的( )和不同包中的( )的代码访问引用。 6.default类型的类成员只能被( )、同一包中的( )的代码访问引用。 7.private类型的类成员只能被其所在类中的代码访问引用,它只具有( )域访问性。 8.系统规定用( )表示当前类的构造方法,用( )表示直接父类的构造方法,在构造方法中两者只能选其一,且须放在第一条语句。 * 一、填空题(续一) 1
文档评论(0)