Object 类

来源:互联网 发布:linux fifo 编辑:程序博客网 时间:2024/05/22 14:08

在Java中所有类都直接或间接继承了java.lang.Object类。Object类是比较特殊的类,它是所有类的父类,是Java类层中最高的层类。当创建一个类时,总是在继承,除非某个某个类已经指定要从其他类继承,否则它就是从java.lang.Object类继承而来的,可见Java中每个类都源于java.lang.Object类,如String、Interger等类都是继承于Object类;除此之外自定义的类也都继承于Object类。由于所有类都是Object子类,所以在定义类时,省略了extends Object关键字。

class Anything{ } 等价于class extends Object{}

在Object类中主要包括clone()、finalize()、equals()、toString()等方法,其中常用的两个方法为equals()何toString()方法。由于所有类都是Object类的子类,所以任何类都可以重写Object类中的方法。

Object类中的getClass()、notify()、notifyAll()、wait()等方法不能被重写,因为这些方法被定义为final类型。

1.getClass()方法

getClass()方法是Object类定义的方法,它会返回对象执行时的Calss实例,然后使用此实例调用getName()方法可以取得类的名称

语法:

getClass().getName();

2.toString()方法

toString()方法的功能是将一个对象返回为字符串形式,它会返回一个String实例。在实际的应用中通常重写toStrinf()方法,为对象提供一个特定的输出模式。当这个类转换为字符串或与字符串连接时,将自动调用重写的toString()方法。

package javademo;public class ObjectInstence {public String toString(){//重写toString()方法return "在"+getClass().getName()+"类中重写toString()方法";}public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println(new ObjectInstence());//打印本类对象}}
在本实例中重写父类Object的toString()方法,在子类的toString()方法中使用Object类中的getClass()方法获取当前运行的类名,定义一段输出字符串,当用户打印Objectinstence类对象时,将自动调用toString()方法。

3.equals()方法
“==” 比较的是两个对象的引用是否相等,而equals方法比较的是两个对象的实际内容。

package javademo;class V{//定义类}public class OverWriteEquals {public static void main(String[] args) {// TODO Auto-generated method stubString s1 = "123";String s2 = "123";System.out.println(s1.equals(s2));//使用equals()方法调用V v1 = new V();V v2 = new V();System.out.println(v1.equals(v2));//使用equals()方法比较v1与v2对象}}

在本实例的结果中可以看出,在自定义的类中使用equals()方法进行比较时,将返回false,因为equals()方法的默认实现时使用“==”运算符比较两个对象的引用地址,而不是比较对象的内容,所以要想真正做到比较两个对象的内容,需要在自定义类中重写equals()方法。

原创粉丝点击