- 1、本文档共91页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
P70 4点 * P75 深拷贝 * * * 《Java程序设计实用教程(第4版)》 3.4.2 类型的多态 子类对象即是父类对象 new Student() instanceof Person //true new Person() instanceof Student //false 父类对象引用子类实例 Person p = new Student(); //赋值相容 Student s = new Person(); //语法错 Object obj = new Person(); //赋值相容 《Java程序设计实用教程(第4版)》 设public boolean equals(Person p) Person p1 = new Person(……); Student s1 = new Student(……); Student s2=new Student(……); p1.equals(s1) //父类对象调用本类方法,参数为子类对象,参数赋值相容 s1.equals(p1) //子类对象调用父类方法,参数为父类对象 s2.equals(s1) //子类对象调用父类方法,参数为子类对象,参数赋值相容 注意:继承后比较两对象相等的规则同其父类,不能满足子类要求 《Java程序设计实用教程(第4版)》 【思考题3-4】 为Student类增加以下方法,它与Person类的equals(p)方法是什么关系? public boolean equals(Student s) //比较当前对象与对象s引用实例的各成员变量值是否相等 《Java程序设计实用教程(第4版)》 Student类的equals(Student)方法 public boolean equals(Student s) { return this==s || s!=null super.equals(s) this.department.equals(s.department) this.speciality.equals(s.speciality) this.number.equals(s.number) this.member==s.member; } 《Java程序设计实用教程(第4版)》 3.4.3 编译时多态和运行时多态性 编译时多态性 方法重载都是编译时多态。 方法覆盖表现出两种多态性,当对象引用本类实例时,为编译时多态,否则为运行时多态。 Person p = new Person(……); p.toString() //执行Person类的toString() Student s= new Student(……); s.toString() //执行Student类的toString() 《Java程序设计实用教程(第4版)》 2. 运行时多态性 Person p = new Student(“张小莉”, new MyDate()); p.toString(); //父类对象引用子类实例 《Java程序设计实用教程(第4版)》 p不能调用子类增加的方法 p.set(经济管理系,信息管理专业,003,true); //语法错,Person类没有声明该方法 《Java程序设计实用教程(第4版)》 3.4.4 多态的方法实现 多态的equals(Object)方法 (1)子类扩展父类equals()方法 设public boolean equals(Person p) 子类若public boolean equals(Student s) //重载 则s1.equals(p1) //继承,执行父类对象比较规则 s2.equals(s1) //重载,执行子类对象比较规则 结论:不必要,因为Person参数可接受Student实例。 子类若public boolean equals(Person p) //覆盖 则s1.equals(p1) //执行父类对象比较规则 s2.equals(s1) //执行子类对象比较规则 《Java程序设计实用教程(第4版)》 (2)Object类的equals(Object)方法 public boolean equals(Object obj) { return this == obj; } 《Java程序设计实用教程(第4版)》 Person类声明equals(Obj
文档评论(0)