Object


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
Person@15db9742
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完成。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值