• Java中特殊的类——Object类


    Java中特殊的类——Object

    1.Object类的概述

    Object类是java默认提供的类。Java中除了Object类,所有的类都是有继承关系的。默认会继承Object类,即所有的对象都可以用Object进行接收

    Object类位于java.lang包中,该包中包含着Java最基础和核心的类,在编译时会自动导入。

    class Per{}

    class Studnet{}

    public class TestObject4_14 {

    public static void main(String[] args) {

    //Object接收所有类的对象

    fun(new Per());

    fun(new Studnet());

    }

    public static void fun(Object obj){

    System.out.println(obj);

    }

    }

     

    2.Object类中的重要方法

    Object类是参数的最高统一类型,所以也提供有一些方法。

    (1)获得对象信息 public String toString()

    class Per{

    private String name;

    private int age;

    public Per(String name, int age) {

    super();

    this.name = name;

    this.age = age;

    }

    }

    public class TestObject4_14 {

    public static void main(String[] args) {

    //Object接收所有类的对象

    fun(new Per("lemon",20));

    fun("hello");

    }

    public static void fun(Object obj){

    //Object中默认输出对象调用的就是toString方法

    System.out.println(obj.toString());

    }

    }

    class Per{

    private String name;

    private int age;

    public Per(String name, int age) {

    super();

    this.name = name;

    this.age = age;

    }

    //toString方法的覆写

    public String toString() {

    return this.name+" "+this.age;

    }

    }

    public class TestObject4_14 {

    public static void main(String[] args) {

    //Object接收所有类的对象

    fun(new Per("lemon",20));

    fun("hello");

    }

    public static void fun(Object obj){

    //Object中默认输出对象调用的就是toString方法

    System.out.println(obj.toString());

    }

    }

     

     

    对于上面的结果,我们不禁会产生疑问:为什么对于字符串中就可以直接输出,而对于对象则输出的一串HashCode?

    toString()的核心目的在于取得对象信息。

    String作为信息输出的重要数据类型,在java中所有数据类型只要遇到String并且执行了“+”操作,那么都要求先将其变为字符串后再连接,而所有的对象要想变成字符串默认采用toString()方法。

    (2)对象比较public boolean equals(Object obj)

    所有的类均可以按照自己的需要对equals方法进行覆写这个方法可用来比较两个对象是否“相等”,至于什么才叫“相等”,各个类可以根据自己的情况与需要自行定义。如String,就是要求两个对象所代表的字符串值相等,而对于一个自定义的Per类,则可能是要求姓名、年龄等一样才算是“相等”。

    尽管不同的类有不同的规则,但都遵循同一条规则如果两个对象是“一样的,那么它们必然是“相等”(equals)的。那么我们又将什么视为是一样的呢:即a和b指向同一个对象。Object类中的equals方法实施的就是这一条比较原则,对任意非空的指引值a和b,当且仅当a和b指向同一个对象时才返回true。

    class Per{

    private String name;

    private int age;

    public Per(String name, int age) {

    super();

    this.name = name;

    this.age = age;

    }

    //equals方法的覆写

    public boolean equals(Object obj) {

    if(obj == null){

    return false;

    }

    if(this == obj){

    return true;

    }

    //obj不是Per的实例化对象

    if(!(obj instanceof Per)){

    return false;

    }

    Per per = (Per)obj;//向下转型,比较属性值

    return this.name.equals(per.name) && this.age == per.age;

    }

    }

    public class TestObject4_14 {

    public static void main(String[] args) {

    //equals方法

    Per per1 = new Per("lemon", 20);

    Per per2 = new Per("lemon", 20);

    Per per3 = new Per("lemon", 18);

    System.out.println(per1.equals(per2));

    System.out.println(per1.equals(per3));

    }

    }

     

     

    3.Object接收引用数据类型

    在之前我们可发现Object可接受任何的对象,因为Object是所有类的父类,但Object并不局限于接收所有数据类型,还包括:数组、类、接口。

    //接口

    interface IPerson{

    //抽象方法

    public void getInfo();

    }

    class Stu implements IPerson{

    public String toString(){

    return "我是一名学生";

    }

    public void getInfo() {

    System.out.println("我的专业是数学");

    }

    }

    //Object接收数组

    public class TestObject4_14 {

    public static void main(String[] args) {

    //Object接收数组对象,向上转型

    Object obj = new int[]{143,8,9,43};

    //强制向下转型

    int[] value = (int[])obj;

    for(int i : value){

    System.out.print(i + " ");

    }

    System.out.println();

    //Object可以接收接口(强制要求),因为接口不能继承任何类

    IPerson person = new Stu();//子类向父接口转型

    Object obj1 = person;//接口向Object转型

    System.out.println(obj1);

    IPerson temp = (IPerson)obj1;//强制类型转换

    temp.getInfo();

    }

    }

     

    总结:

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

  • 相关阅读:
    前端的UI设计与交互之布局篇
    前端的UI设计与交互之文案篇
    前端的UI设计与交互之字体篇
    前端的UI设计与交互之图标篇
    前端的UI设计与交互之色彩篇
    Linux学习(一)
    PHP正则表达式基本语法
    PHP正则表达式函数学习
    PHP发送HTTP请求的几种方式
    PHP实现队列
  • 原文地址:https://www.cnblogs.com/edda/p/12602154.html
Copyright © 2020-2023  润新知