Object类详解 ————JAVA三大特殊类之二

① Object简介
Object是Java默认提供的一个类。Java里面除了Object类,所有的类都是存在继承关系的。默认会继承Object父类。即,所有类的对象都可以使用Object进行接收。
范例:

class Person{}
class Student{}
public class Test {
      public static void main(String[] args) {
          fun(new Person());
          fun(new Student());
      }  
      public static void fun(Object obj) {
           System.out.println(obj);
      }
}

所以在开发之中,Object类是参数的最高同一类型。但是Object类也存在有定义好的一些方法。如下:
在这里插入图片描述

②获取对象信息
在使用对象直接输出的时候,默认输出的是一个地址编码。如果现在使用的是String类,该类对象直接输出的是内容,主要原因就是toString()方法的问题。
范例:观察String 与Object类输出

class Person{
    private String name ;
    private int age ;
    public Person(String name, int age) {
        this.age = age ;
        this.name = name ;
        }
    }
class Student{}
    public class Test {
    public static void main(String[] args){
        fun(new Person("yuisama",25) );
        fun("Hello");
    }
public static void fun(Object obj) {
    System.out.println(obj.toString()); // 默认输出对象调用的就是toString()方法
    }
}

通过以上代码发现,默认Object类提供的toString()方法只能够得到一个对象的地址(而这是所有对象都共同具备
的特征)。如若觉得默认给出的toString()方法功能不足,就在需要的子类上覆写toString()方法

范例:覆写toString方法

class Person{
    private String name ;
    private int age ;
    public Person(String name, int age) {
        this.age = age ;
        this.name = name ;
    }
@Override
    public String toString() {
        return "姓名:"+this.name+",年龄:"+this.age ;
        }
    }
 class Student{}
public class Test {
    public static void main(String[] args) {
        fun(new Person("ysm",25) );
        fun("Hello");
    }
public static void fun(Object obj) {
        System.out.println(obj.toString()); // 默认输出对象调用的就是toString()方法
    }
    }

toString()的核心目的在于取得对象信息。
String作为信息输出的重要数据类型,在Java中所有的数据类型只要遇见了String并且执行了 + ,那么都要求将其变
为字符串后连接,而所有对象要想变为字符串就默认使用 toString() 方法
范例:
在这里插入图片描述
③对象比较
String类对象的比较使用的是equals()方法,实际上String类的equals()方法就是覆写的Object类中的equals()方法。
在这里插入图片描述

④接收引用数据类型
在之前已经分析了Object可以接收任意的对象,因为Object是所有类的父类,但是Obejct并不局限于此,它可以接收所有数据类型,包括:类、数组、接口。

范例:使用Object类接收数组对象
在这里插入图片描述
而Object可以接收接口是Java中的强制要求,因为接口本身不能继承任何类。
范例:使用Object接收接口对象

interface IMessage {
    public void getMessage() ;
    }
class MessageImpl implements IMessage {
@Override
    public String toString() {
    return "I am small biter" ;
    }
public void getMessage() {
    System.out.println("欢迎你 Flying_fish");
    }
}
public class Test {
    public static void main(String[] args) {
        IMessage msg = new MessageImpl() ; // 子类向父接口转型
        Object obj = msg ; // 接口向Obejct转型
        System.out.println(obj);
        IMessage temp = (IMessage) obj ; // 强制类型转换
        temp.getMessage();
        }
}

Object真正达到了参数的统一,如果一个类希望接收所有的数据类型,就是用Object完成。

猜你喜欢

转载自blog.csdn.net/qq_43223415/article/details/84614301
今日推荐