面向对象(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
posted @ 2015-01-16 07:29  aisi_liu  阅读(314)  评论(0编辑  收藏  举报