Java 面向对象 --Object类

Object类是所有类的父类;

Object类的常用方法

1,public String toString() 返回该对象的字符串表示。

2,public boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”

package com.java1234.chap03.sec14;
 
public class A{
 
    /**
     * Object是所有类的父类
     */
    public A() {
        super();
        // TODO Auto-generated constructor stub
    }
 
}

alt+shift+s 弹出菜单 ,然后Generate Constructors from Superclass 自动从父类生成构造方法,这里的super() 我们鼠标先移动上去

然后按住ctrl,然后点进去,会进入到Object类:

我们可以看到父类Object所有的方法,当然我们也可以通过ctrl+o 弹出outline,

接下来讲toString()方法:

我们先上一个类:

package com.java1234.chap03.sec14;
 
public class People {
 
    private String name;
 
    public People(String name) {
        super();
        this.name = name;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public static void main(String[] args) {
        People p1=new People("张三");
        System.out.println(p1);
        System.out.println(p1.toString());
    }
}

定义了一个name属性 生成了get set方法 以及main方法测试 

 

运行输出:

com.java1234.chap03.sec14.People@15db9742

com.java1234.chap03.sec14.People@15db9742

输出对象,默认调用的是toString()方法;

这里我们通过修改toString()实现,来实现输出对象的结果:

@Override
public String toString() {
    // TODO Auto-generated method stub
    return super.toString();
}

这里调用的是Object默认实现,我们来修改下:

package com.java1234.chap03.sec14;
 
public class People {
 
    private String name;
 
    public People(String name) {
        super();
        this.name = name;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
     
     
    @Override
    public String toString() {
        return this.getName();
    }
 
    public static void main(String[] args) {
        People p1=new People("张三");
        System.out.println(p1);
        System.out.println(p1.toString());
    }
}

运行输出:

张三

张三

 equals 是比较对象的引用,是否指向同一个堆内存;

我们上下代码:

package com.java1234.chap03.sec14;
 
public class People {
 
    private String name;
 
    public People(String name) {
        super();
        this.name = name;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
     
 
    public static void main(String[] args) {
        People p1=new People("张三");
        People p2=new People("张三");
        System.out.println(p1.equals(p2));
    }
}

运行输出:

false

 我们来重写下equals方法,来实现比较具体内容:

package com.java1234.chap03.sec14;
 
public class People {
 
    private String name;
 
    public People(String name) {
        super();
        this.name = name;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
     
     
 
    @Override
    public boolean equals(Object obj) {
        String name=((People)obj).getName();
        return this.name==name;
    }
 
    public static void main(String[] args) {
        People p1=new People("张三");
        People p2=new People("张三");
        People p3=new People("李四");
        System.out.println("p1.equals(p2):"+p1.equals(p2));
        System.out.println("p1.equals(p3):"+p1.equals(p3));
    }
}

运行输出:

p1.equals(p2):true

p1.equals(p3):false

 

原文地址:https://www.cnblogs.com/xyg-zyx/p/9827335.html