Java中Object类

来源:互联网 发布:萨龙网络 编辑:程序博客网 时间:2024/06/04 08:58

1. 在java中一切的类都是以继承的关系存在的,如果现在假设一个类Person 类。

class  Person{}

如果一个类定义是没有明确的指明其继承了那个类,则默认继承Object类,也就是说以上的类的定义格式为:

class  Person  extends  Object{}


2.  Object类

在java中所有的类都有一个公共的父类就是Object类,一个类只要没有明显的继承一个类,则肯定是Object 类中的子类,


3. toString()方法: 对象打印时调用

举例:

public class Object1 {

public static void main(String[] args) {

Demo demo = new Demo();

System.out.println("加上toString方法" + demo);

System.out.println("不加上toString方法" + demo.toString());

}

}

class Demo{//定义Demo类,实际上就是继承了Object类
}

运行结果:

加上toString方法ZhangRun.club.Demo@785d65
不加上toString方法ZhangRun.club.Demo@785d65

从以上代码可以知道,加和不加toString()方法一样,这说明对象在打印的时候一定会调用toString()方法,是默认调用的。

那么此时就可以利用此操作完成信息的输出。

举例:

public class Object2 {

public static void main(String[] args) {

Person person = new Person("nishuibaichuan",21);

System.out.println("对象信息:" + person);

}

}

class Person{

private String name;

private int age;

public Person(String name,int age){

this.name = name;

this.age = age;

}

public String toString(){//覆写toString方法

return "姓名:" +this.name

+ ":年纪:" + this.age;

}

}

运行结果:

对象信息:姓名:nishuibaichuan:年纪:21


4.  equals()方法

equals()方法的主要功能是进行对象的比较操作。

String类本身也是Object类的子类,所以已经覆写了此方法。

举例:

public class Object4 {

public static void main(String[] args) {

Persons persons1 = new Persons("nishuibaichuan",21);

Persons persons2 = new Persons("nishuibaichuan",21);

System.out.println(persons1.equals(persons2)?"是同一人!":"不是同一人!");

System.out.println(persons1.equals("hello")?"是同一人!":"不是同一人!");

}

}

class Persons{

private String name;

private int age;

public Persons(String name,int age){

this.name = name;

this.age = age;

}

public boolean equals(Object obj){

if(this == obj){//地址相等

return true;

}

if(!(obj instanceof Persons)){

return false;

}

Persons persons = (Persons)obj;//向下转型

if(persons.name.equals(this.name) && persons.age == (this.age)){

return true;

}else{

return false;

}

}

public String toString(){//覆写toString方法

return "姓名:" + this.name + ":年纪:" + this.age;

}

}

运行结果:

是同一人!
不是同一人!

Object类是所有类的父类,则所有类的对象都可以使用Object接收,但是Object不光可以接收对象,还可以接收任意的引用数据类型


5.  使用Object接收接口实例

举例:

public class Object3 {

public static void main(String[] args) {

A a = new B();//向上转型,为接口实例化

Object obj = a;//使用Object接收,向上转型

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

System.out.print(x.getInfo());

}

}

interface A{

public String getInfo();

}

class B implements A{

public String getInfo(){

return "nishuibaichuan";

}

}

运行结果:nishuibaichuan


6.  数组实际上也可以用Object类进行接收

举例:

public class Object1 {

public static void main(String[] args) {

int t[] = {1,3,5,7};

Object object = t;//使用Object接收数组

print(object);

}

public static void print(Object o){

if(o instanceof int[]){//判断是否为整形数组

int x[] = (int[])o;//强制转换为整形数组

for(int i=0; i<x.length;i++){

System.out.print(x[i] + "\t" );

}

}

}

}

运行结果:1     3     5     7

总结:

(1)Object类是所有类的父类,只要是引用数据类型都可以使用Object进行接收

(2)对象在进行向下转型之前一定要先发生向上转型,要使用instanceof关键字进行判断

(3)toString():对象打印时调用

(4)equals():对象比较时调用

(5)String类也是Object类的子类




0 0
原创粉丝点击