Object类,java中的一个特殊类
Object类
该类是java.lang类库中的一个类,所有的类都是直接或者间接地继承该类而得到的。
Object类常用的方法
1.equals()方法
用来比较二个对象是否相等。
详情切换☞
2.toString()方法
toString()方法功能是将调用该方法的对象的内容转换成字符串,并返回其内容,但返回的是一些没有意义且看不懂的字符串。
如果要使用toString()方法返回对象的内容,可以重新定义该方法,用以覆盖父类中的同名方法以满足需要。
System.out.print(xxx),括号里面的“xxx”如果不是String类型的话,就自动调用xxx的toString()方法
public class app8_8 { public static void main(String[] args) { Abc obj=new Abc(); System.out.println(obj); } } class Abc{ public String toString(){ return "输出abc"; } }
3.getClass()方法
返回运行时的对象所属的类。
getClass()方法返回的类型时Class类型
class Person{ protected String name; public Person(String xm) { name=xm; } } public class app8_8 { public static void main(String[] args) { Person per=new Person("张三"); Class obj=per.getClass(); System.out.println("对象per所属的类为:"+obj); System.out.println("对象per是否是接口:"+obj.isInterface()); } }
Class对象代表了java应用程序运行时所加载的类或者接口的实例,Class对象由JVM自动产生,每当一个类被加载时,JVM就自动为其生成一个Class对象。
由于Class类没有构造方法,所以可以通过Object类的getClass()方法来取得对象的Class对象,所以getClass()方法的功能是返回运行时的对象所属的类。
obj.isInterface()调用 isInterface()方法询问per是否为接口,运行结果为false,即不是接口。
4.对象运算符 instanceof
来测试一个指定对象是否时指定类或它的子类的实例,若是,则返回true,否则返回false。
5.getName()
返回一个类的名称,返回值是String类型。
6.getSuperclass()
获得父类。
运算符instanceof及getName()、getSuperclass()方法的使用
public class app8_8 {//定义app8_8类 static int count = 0;//定义静态变量count protected String name; protected int age; public app8_8(String n1, int a1)//构造方法 { name = n1; age = a1; this.count++;//调用父类的静态变量 } public String toString() { return this.name + "," + this.age; } public void display() { System.out.print("本类名=" + this.getClass().getName() + ";"); System.out.println("父类名=" + this.getClass().getSuperclass().getName()); System.out.print("Person.count=" + this.count + " "); System.out.print("Student.count=" + Student.count + " "); Object obj = this; if (obj instanceof Student)//判断对象属于哪个类 System.out.println(obj.toString() + "是Student类对象。"); else if (obj instanceof app8_8) System.out.println(obj.toString() + "是Person类对象."); } } class Student extends app8_8//子类Student继承自父类app8_8,且是主类但不是public类 { static int count=0;//隐藏了父类的count protected String dept; protected Student(String n1,int a1,String d1) { super(n1,a1);//调用父类的构造方法 dept=d1; this.count++;//调用子类的静态变量 } public String toString()//覆盖父类的同名方法 { return super.toString()+","+dept;//调用父类的同名方法 } public void display() { super.display();;//调用父类的方法 System.out.print("super.count="+super.count);//引用父类的变量 System.out.println(" ;this.count="+this.count); } public static void main(String[] args) { app8_8 per=new app8_8("王小桃",23); per.display(); Student stu=new Student("张小三",22,"计算机系"); stu.display(); } }
父类对象per调用自己的display()方法输出的结果
子类对象stu调用自己的display()方法输出的结果