Object类

在每定义一个类的时候,如果此类没有明确的继承一个类,则将默认继承Object类,即:所有的类都是Object子类,
下面两种类定义相同
class Person{ class Person extends Object{}
}
范例:利用Object类接收类对象
package Object;
class Person extends Object{//默认隐含
}
public class Objecta {
public static void main(String[] args) {
// TODO Auto-generated method stub
Object objA= new Object();
Object objB="hello";
System.out.println(objA);//Object@4361bd48
System.out.println(objB);//hello
}


}
在Object类里面定义了许多的方法,那么其中在用户定义简单java类的时候从标准来讲应该重写Object类之中的三个方法
取得对象信息:
public String toString();代替之前的getInfo();
对象比较:public boolean equals(Object obj)
对象哈希码 ::(之后再学)


取得对象信息:toString()
package Object;
class Persona{}
public class Objectb {
public static void main(String[] args) {
// TODO Auto-generated method stub
Persona per=new Persona();
System.out.println(per);//Object.Persona@2401f4c3
System.out.println(per.toString());//Object.Persona@2401f4c3
}
}
范例:重写toString();
class Persona{//默认隐含Object
private String name;
private int age;
public Persona(String name,int age)
{
this.name=name;
this.age=age;
}
public String toString() {
return "姓名:"+this.name+",年龄:"+this.age;
}
}
public class Objectb {
public static void main(String[] args) {
// TODO Auto-generated method stub
Persona per=new Persona("张三",20);
System.out.println(per);//姓名:张三,年龄:20
System.out.println(per.toString());//姓名:张三,年龄:20
}
}
从今天开始getInfo()方法不需要再写了,写toString()就完了


对象比较:public boolean equals(Object obj)
在学习String类的时候就已经接到了equals()方法,是进行字符串相等比较的,因为String类的equals()方法就是重写Object类的equals方法再来。
package Object;
class Personb{//默认隐含Object
private String name;
private int age;
public Personb(String name,int age)
{
this.name=name;
this.age=age;
}
public boolean equals(Object obj) {
if(obj==null) {
return false;
}
if(this==obj) {
return true;
}
if(!(obj instanceof Personb)) {//不是本类实例
return false;
}
Personb personb=(Personb)obj;
if(this.name.equals(personb.name)&& this.age==personb.age) {
return true;
}
return false;

}
public String toString() {
return "姓名:"+this.name+",年龄:"+this.age;
}
}
public class Objectc {
public static void main(String[] args) {
// TODO Auto-generated method stub
Personb perA=new Personb("张三",20);
Personb perB=new Personb("张三",20);
System.out.println(perA.equals(perB));
}
}


接收所有引用数据
Object类是所有类的父类,那么一定可以接收所有的类对象,可是在JAVA开发过程之中,考虑到参数统一的问题,让Object类的功能扩大了,即:
使用Object可以接收数组或者是接口对象。
范例:使用Object数组
public class Objectd {
public static void main(String[] args) {
// TODO Auto-generated method stub
Object obj=new int[]{3,2,1};
if(obj instanceof int[]) {//是int数组
int result[]=(int [])obj;
for(int x=0;x<result.length;x++) {
System.out.println(result[x]+",");
}
}
}
}
范例:利用Object接收接口对象
interface A{}
class B implements A{
public String toString() {
return "HELLO";
}
}
public class Objecte {
public static void main(String[] args) {
// TODO Auto-generated method stub
A a=new B();//接口实例化
Object obj=a;//使用Object接收接口对象
A temp=(A)obj;//向下转型
System.out.println(temp);
}
}
所有的引用类型都可以使用Object接收,以后就可以利用Object作为参数的统一了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值