Object
程序员文章站
2022-05-16 14:21:45
...
JAVA三个特殊类之Object
简介
Object是java默认提供的一个类。Java里面除了Object类,所有的类都存在继承关系,默认会继承Object父类,也就是说,所有类的对象都可以使用Object进行接受。
获取对象信息
public String toString()
在使用对象直接输出的时候,默认输出的是一个地址编码,若用String类,该类对象直接输出的是内容。默认Object类提供的toString()方法只能够得到一个对象的地址(所有对象都具备这样的特性)。若默认给出的toString()方法功能不足,就需要在子类上覆写toString()方法,看代码:
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
}
class Student{}
public class TestObject{
public static void main(String[] args){
fun(new Person("zhang",23));
fun("hello");
}
public static void fun(Object obj){
System.out.println(obj.toString());
}
}
看结果:使用对象直接输出的时候,就是一个地址编码。
D:\MySQL5.7\javawork>java TestObject
[email protected]
hello
接着看,覆写toString()方法:
class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
//Override
public String toString(){
return "姓名:"+this.name+" 年龄:"+this.age;
}
}
class Student{}
public class TestObject{
public static void main(String[] args){
fun(new Person("zhang",23));
fun("hello");
}
public static void fun(Object obj){
System.out.println(obj.toString());
}
}
看结果:输出的不再是地址编码,而是扩展之后的功能。
D:\MySQL5.7\javawork>java TestObject
姓名:zhang 年龄:23
hello
对象比较
在String类对象的比较中使用的是equals()方法,而实际上String类的equals()方法就是覆写了Object类的equals()方法。不再赘述。
接收引用数据类型
因为Object类是所有类的父类,所以Object可以接收任意的对象,同时,Object也可以接收所有的数据类型,包括类、数组、接口。
(1)使用Object接收数组对象
public class TestObject{
public static void main(String[] args){
//Object接收数组对象,向上转型
Object obj = new int[]{1,2,3,4,5,6};
//向下转型需要强转
int[] data = (int[])obj;
//增强的for循环:foreach
for(int i:data){
System.out.print(i+" ");
}
}
}
D:\MySQL5.7\javawork>java TestObject
1 2 3 4 5 6
(2)使用Object接收接口对象
interface IMessage{
public void getMessage();
}
class MessageImp1 implements IMessage{
//覆写
public String toString(){
return "hehe";
}
public void getMessage(){
System.out.println("欢迎");
}
}
public class TestObject{
public static void main(String[] args){
//子类向父类接口转型
IMessage msg = new MessageImp1();
//接口向Object转型
Object obj = msg;
System.out.println(obj);
IMessage tmp = (IMessage)obj;
tmp.getMessage();
}
}
D:\MySQL5.7\javawork>java TestObject
hehe
欢迎
至此,足可以证明Object真正达到了参数的统一,所以说如果一个类希望接收所有的数据类型,就用Object完成。
推荐阅读
-
Domain Object贫血vs富血(DDD)和spring roo到ruby的扯淡
-
Domain Object贫血vs富血(DDD)和spring roo到ruby的扯淡
-
Error in created hook: “TypeError: Object(...) is not a function“
-
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
-
TypeError: 'function' object is not subscriptable
-
Using $this when not in object context错误信息
-
[HOOLOO] zizaco/entrust 5.2.x-dev Class name must be a valid object or a string,hooloozizaco
-
关于PHP中Object对象的笔记分享_PHP
-
new Memcached()的时分报Trying to clone an uncloneable object of class Memcached
-
php警告Creating default object from empty value 问题的解决方法