java面向对象高级.ppt
《java面向对象高级.ppt》由会员分享,可在线阅读,更多相关《java面向对象高级.ppt(53页珍藏版)》请在三一办公上搜索。
1、面向对象的高级程序设计,伍淳华北京邮电大学计算机学院,2,面向对象高级程序设计,继承object类,所有类都是Object的子类;Object obj=new BackAccount();Object obj=new String(“Hello”);,3,面向对象高级程序设计,继承object类,equals方法toString方法clone方法在自己编写的类中,最好重写这些方法!,4,面向对象高级程序设计,继承object类,equals方法public boolean equals(Object obj)return(this=obj);判断两个对象是否具有相同的引用,5,面向对象高级程序
2、设计,继承object类,equals方法 class BankAccount public boolean equals(Object obj)BankAccount other=(BankAccount)obj;return(accountNumber=other.accountNumber&balance=other.balance),6,面向对象高级程序设计,继承object类,equals方法 class BankAccount public boolean equals(Object obj)if(this=obj)return true;if(obj=null)return fa
3、lse;if(getClass()!=obj.getClass()return false;BankAccount other=(BankAccount)obj;return(accountNumber=other.accountNumber&balance=other.balance),7,面向对象高级程序设计,继承object类,子类中实现equals方法 首先调用超类的equals,如果未通过测试,对象就不可能相等;如果超类中的域都相等,就比较子类中的实例域;,8,面向对象高级程序设计,继承object类,子类中实现equals方法class SavingAccount extends
4、BankAccount public boolean equals(Object obj)if(!super.equals(obj)return false;SavingAccount other=obj;return/比较SavingAccount中的成员变量,9,面向对象高级程序设计,继承object类,Java语言规范要求equals方法具有下面的特性1)自反性:对于任何非空引用x,x.equals(x)应该返回true;2)对称性:对于任何引用x和y,如果x.equals(y)返回true,那么y.equals(x)也应该返回true;3)传递性:对于任何引用x,y,z,如果x.equ
5、als(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回true;4)一致性:如果x和y引用的对象没有发生变化,那么反复调用x.equals(y)应该返回同样的结果;5)对于任意非空引用x,x.equals(null)应该返回false;,10,面向对象高级程序设计,继承object类,注意:class BankAccount public boolean equals(BankAccount obj)if(this=obj)return true;if(obj=null)return false;if(getClass()!=obj.getClass
6、()return false;return(accountNumber=obj.accountNumber&balance=obj.balance),11,面向对象高级程序设计,继承object类,注意:class BankAccount public boolean equals(Object obj)if(this=obj)return true;if(obj=null)return false;if(!(obj instanceof BankAccount)return false;BankAccout other=(BankAccount)obj;return(accountNumbe
7、r=other.accountNumber&balance=other.balance),12,面向对象高级程序设计,继承object类,注意:如果子类能够拥有自己的相等概念,那么对称性需求将强制采用getClass进行检测;如果由超类决定相等的概念,则可以使用instanceof进行检测,这样可以在不同子类的对象之间进行相等的比较.,13,面向对象高级程序设计,继承object类,hashCode方法hasCode方法返回一个整型数值,并合理地组合实例域的散列码,以便能够让各个不同的对象产生的散列码更加均匀;如果x.equals(y)返回true,那么x.hashCode()就必须与y.ha
8、shCode()具有相同的值;如果重新定义equals方法,就必须重新定义hashCde方法;Object类的hashCode()方法返回对象的存储地址;,14,面向对象高级程序设计,继承object类,hashCode方法class BankAccountpublic int hashCode()return 7*Integer(accountNumber).hashCode()+11*Double(balance).hashCode();,15,面向对象高级程序设计,继承object类,toString方法 返回对象的字符串表示;Object类中默认返回对象所属的类名和散列码.System
9、.out.println(System.out);输出:java.io.PrintStreama90653,16,面向对象高级程序设计,继承object类,toString方法 重写toString方法一般遵循的格式为:类名成员变量值 java.awt.Pointx=20,y=20BankAccout中的toString函数可改写为:public String toString()retrun“BankAccoutbalance=“+balance+”,accountNumber=“+accountNumber+”;,17,面向对象高级程序设计,继承object类,toString方法publ
10、ic String toString()retrun getClass.getName()+”balance=“+balance+”,accountNumber=“+accountNumber+”;,18,面向对象高级程序设计,继承object类,toString方法class SavingAccount extends BankAccountpublic String toString()retrun super.toString()+”interest=“+interest+”;,19,面向对象高级程序设计,接口,接口代码重用Eg:DataSet,20,面向对象高级程序设计,接口,接口代码
11、重用 如果想计算一组BankAccount对象中余额的最大值和平均值?,21,面向对象高级程序设计,接口,接口代码重用 public class DataSet.public void add(BankAccount x)sum=sum+x.getBalance();if(count=0|maximum.getBalance()x.getBalance()maximum=x;count+;public BankAccount getMaximum()return maximum;private double sum;private BankAccount maximum;private int
12、 count;,22,面向对象高级程序设计,接口,接口代码重用 public class DataSet.public void add(Student x)sum=sum+x.getScore();if(count=0|maximum.getScore()x.getBalance()maximum=x;count+;public Student getMaximum()return maximum;private double sum;private Student maximum;private int count;,23,面向对象高级程序设计,接口,接口代码重用X的数据类型;如果每个对象
13、实现一个getMeasure方法来提供测量的内容,就可实现一个可重用的DataSet,以add()方法为例:sum=sum+x.getMeasure();if(count=0|maximum.getMeasure()x.getMeasure()maximum=x;count+;X的数据类型应该是什么?-X的数据类型可以是任意实现了getMeasure()的类。,24,面向对象高级程序设计,接口,接口代码重用接口可用来规范类的行为public interface Measurabledouble getMeasure();DataSet可以返回一组对象中值最大的那个对象,并计算出这一组对象的平均
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 面向 对象 高级
链接地址:https://www.31ppt.com/p-6510330.html