Object类(关于继承的补充)

一、object类的概念

Object是一个神奇的类,它是所有类的祖先,也就是说它可以是任何人的爸爸,见到同学就说,我是Object哈哈哈,开个玩笑。如果一个类没有显示地指明其父类,那么它的父类就是Object,如同我们都是炎黄子孙一样,所有类都是Object的子孙,这就是java.lang.Object

二、object的玩法

作为一个超类,Object类为子类提供了一些pubilc修饰的方法,便于子类覆盖来实现子类自己特定的功能,接下来详细介绍其中equals方法和toString方法

1、equal方法

public boolean equals(Object obj)
指示一些其他对象是否等于此。 equals方法在非空对象引用上实现等价关系:

自反性 :对于任何非空的参考值x , x.equals(x)应该返回true 。
它是对称的 :对于任何非空引用值x和y , x.equals(y)应该返回true当且仅当y.equals(x)回报true 。

传递性 :对于任何非空引用值x , y和z ,如果x.equals(y)回报true个y.equals(z)回报true ,然后x.equals(z)应该返回true 。

一致性:对于任何非空引用值x和y ,多次调用x.equals(y)始终返回true或始终返回false ,没有设置中使用的信息equals比较上的对象被修改。

对于任何非空的参考值x , x.equals(null)应该返回false 。 该equals类方法Object实现对象上差别可能性最大的相等关系; 也就是说,对于任何非空的参考值x和y ,当且仅当x和y引用相同的对象( x == y具有值true )时,该方法返回true 。

2、toString方法

public String toString()
返回对象的字符串表示形式。 一般来说, toString方法返回一个“textually代表”这个对象的字符串。 结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法。
该toString类方法Object返回一个由其中的对象是一个实例,该符号字符`的类的名称的字符串@ ”和对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:

三、代码示例

接下来通过圆是否半径相等来判断两个圆是否相等,并获取他们半径打印出来,实现equals方法和toString方法的重写

public class MyCircleTest {
    public static void main(String[] args) {
        MyCircle m1 = new MyCircle(8);
        MyCircle m2 = new MyCircle(8);
        MyCircle m3 = new MyCircle(6);
        System.out.println(m1.toString());
        System.out.println(m2.toString());
        System.out.println(m3.toString());

        if(m1.equals(m2))
            System.out.println("They are equals!");
        else
            System.out.println("They are equals now");

        if(m2.equals(m3))
            System.out.println("They are equals!");
        else
            System.out.println("They are equals now");
    }
}
class MyCircle{
    private int radius;

    public MyCircle() {
    }

    public MyCircle(int radius) {
        this.radius = radius;
    }

    public int getRadius() {
        return radius;
    }

    public void setRadius(int radius) {
        this.radius = radius;
    }

    //覆盖父类中的equals方法
    @Override
    public boolean equals(Object obj){
        MyCircle o = (MyCircle)obj;
        if(o.getRadius()==this.radius)
            return true;
        else
            return false;
    }

    //覆盖父类中的toString方法
    @Override
    public String toString(){
        return "radius="+radius;
    }
}

运行结果:
Object类(关于继承的补充)

上一篇:Qt编写自定义控件12-进度仪表盘


下一篇:matlab求峰度(kurtosis)、偏度(skewness)得函数及python对应的峰度(kurtosis)、偏度(skewness)函数