java 一切object_菜鸡的Java笔记 Object 类

Object 类

Object类 的主要作用

Object 类的常用方法

内容

虽然有了对象的向上转型,可以解决了参数的统一问题,但是面对JAVA 开发之中如此众多的开发类

所以现在就面临这样一个问题:参数类型怎么选择才能够保存所以的类对象呢?

为此java里面考虑到了此种情况有一个Object类

此类定义:public class Object

可以发现在整个对的java里面只有Object 类的定义的时候没有定义父类,而其他的所有类都是Object类的子类

也就是说在整个java之中,除了Object类之外,一切都存在有继承关系

理论上定义一个类的时候如果没有继承任何的父类,那么其将默认继承Object类

这样的直接好处就是,所以类的对象都可以使用Object来接收

范例:利用Object接收对象

classPerson{

}public classobjectclass{public static voidmain(String args[]){

Object obj= new Person();//向上转型

}

}

利用Object可以实现最终的参数类型的统一

清楚了 Object 类的作用之后,下面要完善一些操作:

在简单java类的时候需要提供有一个 getInfo() 的方法以返回对象信息

在进行简单java类对象比较的时候准备有一个 compare() 方法进行比较

那么从现在开始以上的这两个方法需要换名,在 Object 类里面定义有一下的两个匹配方法

取得对象信息: public String toString();

对象比较: public boolean equals(Object obj);

取得对象信息

如果说现在直接输出一个对象,默认输出的是一个对象的地址编码

范例:观察默认的 toString

classPerson{

}public classobjectclass{public static voidmain(String args[]){

Person p= newPerson();

System.out.println(p);

System.out.println(p.toString);

}

}

通过此代码可以发现,在默认情况下如果要输出一个对象都会执行 toString()方法,不管是否显式调用此方法

于是 Object 类对于此方法就有了一个自己的默认实现,虽然不知道每个对象输出时都需要那些,但是至少知道每个对象存在都会有一个地址编码

所以默认的输出内容就是对象的编码信息

如果用户现在不希望输出编码,而希望输出具体的内容,则可以进行方法的覆写

范例:覆写 toString() 方法

classPerson{privateString name;private intage;public Person(String name,intage){this.name =name;this.age =age;

}publicString toString(){return "姓名:"+this.name+";年龄:"+this.age;

}

}public classobjectclass{public static void main(String args[]){ //为了方便模拟化调用

Person p = new Person("枫",20);

System.out.println(p);

}

}

对象比较:equals()

对象比较在之前曾经使用过compare()方法进行表示,而且最为重要的是在之前实现对象比较时比较的流程:地址是否为空,属性是否相同

范例:实现对象比较

classPerson{privateString name;private intage;public Person(String name,intage){this.name =name;this.age =age;

}public booleanequals(Object obj){if(this == obj){//地址相同

return true;

}if(obj == null){ //没得比

return false;

}if(!(obj instanceofPerson)){return false;//两个对象没关系

}

Person per=(Person)obj;if(this.name.equals(per,name)&&this.age ==per.age){return true;

}return false;

}publicString toString(){return "姓名:"+this.name+";年龄:"+this.age;

}

}public classobjectclass{public static void main(String args[]){ //为了方便模拟化调用

Person p1 = new Person("枫",20);

Person p2= new Person("枫",20);

System.out.println(p2);//有BUG 如果传进来的是字符串就会出错,所以以后有判断就.....

}

}

以后开始,所编写对象比较操作,都以 Object 类的 equals()方法为主

Object 类可以接收一切引用类型

java的引用类型包含:数组,类,接口。现在已经证明了所有的类对象都可以使用 Object 进行接收

可是数组和接口,他们也可以被 Object接收

范例:利用 Object接收数组对象

public classobjectclass{public static voidmain(String args[]){

Object obj= new int[]{1,2,3};//利用Object接收整型数组,向上转型

if(obj instanceof int[]){ //对象是否是int数组

int data[] = (int[])obj;//向下转型

for(int x = 0;x

System.out.println(data[x]);

}

}

}

}

除了可以接收数组之外,接口也可以接收

范例:辅助概念

interface A{//定义了一个接口

public voidptintA();

}interfaceB{public voidptintB();

}class X implementsA,B{public voidptintA(){

System.out.println("AAAAAAAAAAAAAAA");

}public voidptintB(){

System.out.println("BBBBBBBBBBBBBBBB");

}

}public classInterface{public static voidmain(String args[]){

A a= new X();//向上转型

B b = (B)a;//虽然A与B没有关系,但是X是B的子类

b.ptintB();

}

}

按照以上的思路解决Object 接收接口对象的问题

interface A{//定义了一个接口

public voidptintA();

}class X equals Object implementsA{public voidptintA(){

System.out.println("AAAAAAAAAAAAAAA");

}

}public classInterface{public static voidmain(String args[]){

A a= new X();//向上转型

Object obj = a;//向上转型

A temp = (A)obj; //向下转型

temp.ptintA();

}

}

Object 所有引用类型都可以接收,对于 数据的统一性操作上更加方便了

总结

1.Object类是所有类的父类,可以接收所以引用数据类型

2.Object类提供的 toString()与 equals()方法可以应用在简单java类中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值