面向对象(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