zoukankan      html  css  js  c++  java
  • 面向对象(Object类)

    Object类
    object是java中所有对象直接或者间接的超类/父类
    该类中具备的肯定是所有对象都具备的功能(向上抽取)
    -----------------------------------
    object类构造函数中调用的super就是自己
    object类提供的方法,也就是说,你任意建一个类,肯定会有这些方法可以使用
    看这些方法里面,有一个equals()方法,接收Object类型的参数,那这不就是多态的体现吗
    Person p1 = new Person();
    Animal a1 = new Animal();
    p1.equals(a1);
     
    看参数,其实就是这样的
    Object o = new Animal();    -->向上转型,多态的体现
    _____________________________________________________________________________
    实例
    定义类中的比较方法
    看看里面的比较方法是怎么来的
    首先,equals方法是重写的Object类的equals
    并且,比较this.num == 参数.num -->会报错,因为父类Object方法中没有num这个变量
    所以,要向下转型 Demo d =(Demo)obj;
    此时,在比较时,如果传入的两个参数类型不同,就会抛出异常ClassCastException
    怎么解决呢,这就需要判断一下,如果传入的参数与这个类类型不同,直接返回false(类型都不一样,怎么可能相等)
    class Demo 
    {
        private int num;
        Demo(int num)
        {
            this.num = num;
        }
        public boolean equals(Object obj)//Object obj = new Demo();
        {
     
            if(!(obj instanceof Demo))
                return false;
            Demo d = (Demo)obj;
     
            return this.num == d.num;
        }
    }
    ——————————————————————————————
    实例
    看方法中还有一个toString()方法,也就是说,java所有类都可以转换成字符串
    Person p = new Person();
    p.toString();
    返回的是一个地址值(哈希值),因为这是引用类型
    Object方法里面还有一方法,返回哈希值hashCode
  • 相关阅读:
    enum 与 enum class
    git error: unable to rewind rpc post data
    ip地址转换
    大端字节序&小端字节序(网络字节序&主机字节序)
    c++虚析构函数
    引用
    单例模式
    c++ 类静态成员、非静态成员初始化
    算法导论进度帖startedby20131029
    Linux驱动程序接口
  • 原文地址:https://www.cnblogs.com/aisi-liu/p/4227620.html
Copyright © 2011-2022 走看看