您现在的位置是:首页 > 文章详情

Java 面向对象 之 Object 类

日期:2018-08-22点击:460

http://www.verejava.com/?id=16992832835152

/**
    知识点: Object 类

    注意:
        1. Object 是所有类的根类, 也就是说所有类默认都继承Object 只是省略没有写
        2. 当 println()输出一个对象的时候 自动调用了 Object的 toString() 方法
        3. Object toString() 方法返回的是 : 类名+@+16进制的哈希码hashCode地址
            哈希码 代表对象的内存地址,所以如果比较两个对象的引用相等==必须 哈希码相等
        4. Object equals(Object obj) 方法比较的也是引用内部是以==实现的
        5. String 对象的equals()方法怎么是比较内容了?
        6. 如果要equals()比较两个对象的内容相等我们需要复写equals 方法
        7. 当Object的子类复写了 toString() 方法, println()输出时调用子类复写的 toString() 方法
        8. 如果复写了equals()方法,为了保证对象相等哈希码hashcode必须相等的特性,
           我们也要复写hashCode()方法使保持对象的一致性
        9. Object 可以接收任意引用数据类型(类,数组,接口)

    回顾知识点:
        1. 如果一个类定义了带参数的构造方法, 当用不带参数的构造方法调用时,java
           虚拟机不会自动生成默认的构造方法,必须得手动显示定义不带参数的默认构造方法。
*/
public class TestObject {
    
    public static void main(String[] args) {
        //实例化一个 Student
        Object p = new Student("李明");
        Student p2 = (Student) p;
        Student p3 = new Student("张涛");
        Student p4 = new Student("李明");
        System.out.println(p);
        System.out.println(p == p2);
        System.out.println(p3);
        System.out.println(p.equals(p3));
        System.out.println(p == p4);
        System.out.println(p.equals(p4));
        System.out.println(p);
        System.out.println(p4);

        Person p5 = new Student("李明");
        System.out.println(p4.equals(p5));

        String[] p6 = new String[1];
        p6[0] = "李明";
        System.out.println(p4.equals(p6));
    }
}

interface Person {
    //什么人可以说话
    public void say();
}

class Student extends Object implements Person {
    
    private String name;

    public Student() {

    }

    public Student(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public void say() {
        System.out.println("学生会说英语");
    }

    public boolean equals(Object obj) {
        //如果地址都相等, 两个对象肯定相等
        if (this == obj) {
            return true;
        }
        //判断是否是 Student 对象实例
        if (obj instanceof Student) {
            //将obj向下转型成 Student
            Student p = (Student) obj;
            //如果内容相等返回true
            if (this.name.equals(p.getName())) {
                return true;
            }
        }
        return false;
    }

    public int hashCode() {
        return this.name.hashCode();
    }

    public String toString() {
        return this.name;
    }

}

http://www.verejava.com/?id=16992832835152

原文链接:https://yq.aliyun.com/articles/627984
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章