《面向对象程序设计》类和对象.ppt

  1. 1、本文档共216页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实际上完全可以把接口理解成为一种特殊的类,接口是由常量和抽象方法组成的特殊类。 public interface Device { void turnOff(); void turnOn(); } 接口是一种对象类型,可以声明该类型的变量,例如:Device device; 一个要使用接口的类,必须implements 该接口。 implements an interfaces public class t1 { public static void main(String[ ] args) { B b=new B( ); b.show( ); } } interface A{ double g=9.8; void show( ); } class B implements A{ public void show( ){ System.out.println("g="+g); } } interface Device { void turnOff(); void turnOn(); } class TV implements Device { private String name; public TV (String initialName) { name = initialName; } public void turnOff( ) { System.out.println("Turn off the device " + name); } public void turnOn( ) { System.out.println("Turn on the device " + name); } public String toString() { return "TV"; } } public static void main (String[ ] args) { Device device = new TV("TV"); device.turnOn(); device.turnOff(); System.out.println(device); } class TV implements Device { …… } 对于所有实现接口的类,其对象都可以赋给接口类型的变量。 Device device = new TV("TV"); interface 是一种只可作为基类的对象类型。 当程序员想要通过共同函数特征来操作一组classes时,便可撰写interface作为这一组classes的“基类”。 接口类型的变量和接口声明的方法都是polymorphic(多态). 实现该接口的子类中所有与interface所声明的函数特征相符的函数,都会通过动态邦定的机制来调用。 接口可以实现多态 interface Device{ public void show(); } class A implements Device{ public void show(){ System.out.println("A"); } } class B implements Device{ public void show(){ System.out.println("B"); } } public static void main(String[ ] args) { Device d1=new A(); d1.show(); d1=new B(); d1.show(); } 对于方法调用:s[i].draw() 变量s[i]是多态的变量,即s[i]可以指向其自身类型的对象,还可以指向其子类型的对象。 由于Shape类型的对象和其子类型的对象都有方法draw( ),那么方法s[i].draw( )的调用和哪一个方法体进行绑定呢? 所谓“绑定(binding)”,就是建立函数调用(method call)和函数体(method body)的关联。 如果绑定动作发生于程序执行前(由编译器和连接器完成),称为“先期绑定(early binding)”。 绑定动作根据对象的具体型别在程序运行期间进行称为“执行期绑定(run-time )”或“动态绑定(dynamic binding)”。 编译器不知道对象的具体型别

文档评论(0)

today-is-pqsczlx + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档