JAVA学习中,一个关于Object对象转换时对应方法的问题
来源:互联网 发布:燕十八php高性能 编辑:程序博客网 时间:2024/05/19 13:26
我在《Java语言程序设计》中,看到有这样的一个例子
Object myObject=new Circle(); if(myObject instanceof Circle) { System.out.println("The circle diameter is "+ ((Circle)myObject).getDiameter()); }
”这里的强制转换因为,声明类型决定了在编译时匹配哪个方法。
使用myObject.getDiameter()会引起一个编译错误,因为Object类没有getDiameter方法。编译器无法找到和myObject.getDiameter()匹配的方法。所以,有必要将myObject转换为circle类型,告诉编译器myObject也是circle的一个实例。“
当我在实践代码
public class Test{ public static void main(String[] args) { Object circle1=new Circle(); Object circle2=new Circle(); System.out.println(circle1.equals(circle2));; }}class Circle{ double radius; public boolean equals (Object circle) { System.out.println("*****-"); return this.radius==((Circle)circle).radius; }}
的时候,发现,当Circle类中,有在Object中的方法重写时,会匹配circle类中的equals()方法。
如果
public class Test{ public static void main(String[] args) { Object circle1=new Circle(); Object circle2=new Circle(); System.out.println(circle1.equals(circle2));; }}class Circle{ double radius; public boolean equals (Circle circle) { System.out.println("*****-"); return this.radius==((Circle)circle).radius; }}
这里的equals方法就不是Object的重写,这时候才遵循书上说的,声明类型决定了在编译时匹配哪个方法这句话。
即是说,当声明类型中的方法被原来类型重写过,这个时候匹配的方法就是最近的那个类所覆盖的方法。
记下,以供以后学习。
0 0
- JAVA学习中,一个关于Object对象转换时对应方法的问题
- JAVA中Object对象拥有的方法
- java Object对象中hashCode和equals方法学习
- Java J2SE / 基础类 中关于 为什么要改写java中Object类的equals方法 的 问题
- Java Socket 通信中传递Object对象注意的问题
- Java Socket 通信中传递Object对象注意的问题
- 关于java中Object类的某些方法的总结
- java中关于时区转换的方法
- 关于java方法中Object... args参数的含义
- java关于Object类中9大方法的分析
- 关于java方法中Object... args参数的含义
- java中clone一个对象的方法
- 关于Java构造方法的一个问题
- 关于java中任意对象强制转换为接口类型的问题
- 关于java中任意对象强制转换为接口类型的问题
- 关于List,ArrayList中remove(object obj)方法不能删除对象问题
- 关于List,ArrayList中remove(object obj)方法不能删除对象问题
- Java中 Object的方法
- 第一天开博客
- HDU 5137 数据结构之最短路
- sql 将结果集系列化为json
- java项目获取文件路径总结
- android 基本I/O操作
- JAVA学习中,一个关于Object对象转换时对应方法的问题
- The operation couldn’t be completed
- IT_linux_shell_系统脚本--"/etc/profile"
- Poj 3262 Protecting the Flowers【贪心】
- 11、Java String类型与Date日期类型互相转换
- wsimport wsdl提示[ERROR] "不支持使用 SOAP 编码
- HTML5(loading...)
- Linux crontab 命令格式与详细例子
- 在ios7及以上系统中在UINavigationBar中添加UITextField或者UISearchbar时不显示输入光杆问题及解决