您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
【第6章:面向对象(高级)】_Object类
发布时间:2020-12-17 20:39:23编辑:雪饮阅读()
对象可直接打印
class Pet{}
public class Hello{
public static void main(String args[]){
System.out.println(new Pet());
}
}
D:\>javac Hello.java
D:\>java Hello
Pet@c17164
因为默认走的toString方法
class Pet{}
public class Hello{
public static void main(String args[]){
System.out.println(new Pet().toString());
}
}
D:\>javac Hello.java
D:\>java Hello
Pet@c17164
所以在类中显式定义toSting方法就是对默认toSting方法的覆盖(必须满足覆盖条件),所有对象都是默认继承自Object类的,所以默认toString方法也是Object类所有。
class Pet{
public String toString(){
return "test";
}
}
public class Hello{
public static void main(String args[]){
System.out.println(new Pet());
}
}
D:\>javac Hello.java
D:\>java Hello
Test
equals方法重构
equals不仅仅可以比较字符串对象,它也是Object类的,所以可以自定义类中重构该方法,则不仅仅比较两个对象的地址还可以比较自定义类中的自定义属性。当然也可以兼容原来的比较字符串的功能。因为接收的参数为字符串时本身也是对象,而对象的始祖类就是Object,所以这里重构时候的形参类型自然也就是Object
class Person{
private String name;
private int age;
public boolean equals(Object obj){
if(this==obj){
return true;
}
else{
if(obj instanceof Person){
Person p=(Person)obj;
if(p.name.equals(this.name) && p.age==this.age){
return true;
}
return false;
}
return false;
}
}
public Person(String name,int age){
this.name=name;
this.age=age;
}
}
public class Hello{
public static void main(String args[]){
System.out.println(new Person("snowDrink",24).equals(new Person("duMinJie",24)));
System.out.println(new Person("snowDrink",24).equals(new Person("snowDrink",24)));
System.out.println(new Person("snowDrink",24).equals("穿越古道海域"));
}
}
D:\>javac Hello.java
D:\>java Hello
false
true
false
Object也支持接收接口类型,可以与接口之间进行上下类型互转
interface Person{
abstract public void getInfo();
}
class Student implements Person{
public void getInfo(){
System.out.println("我是一名java小学生");
}
}
public class Hello{
public static void main(String args[]){
//默认向上转型
Person p=new Student();
//向始祖类转型 所以接口也可以被Object所接收
Object o=p;
//o对象因为已经是p转型到Object,所以知其子类,所以还可以向下转型
Person p2=(Person)o;
p2.getInfo();
}
}
D:\>javac Hello.java
D:\>java Hello
我是一名java小学生
Object也可以接收数组类型,可以与数组类型进行上下类型的相互转型
public class Hello{
public static void main(String args[]){
int arr[]={1,3,5,6};
print(arr);
}
public static void print(Object obj){
if(obj instanceof int[]){
int[] arr=(int[]) obj;
for(int x:arr){
System.out.println(x);
}
}
}
}
关键字词:java,面向对象,Object