欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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完成。

上一篇: Object

下一篇: Object