Java學習——Object類
阿新 • • 發佈:2018-11-05
Object類
Object類是jdk預設提供的一個類,Java中除了Object類,所有類都存在繼承關係,預設會繼承Object父類。即所有類都是Object類的子類。
Object展現了最高的引數統一化——所有類的物件都可以使用Object進行接收。
一、Object類中兩個重要的方法
1.toString()——取得物件資訊
class Test{
public static void main(String[] args) {
fun(new Person("張三",25) );
}
public static void fun(Object obj) {
System.out.println(obj.toString());
}
}
class Person{
private String name ;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
}//輸出 [email protected]
通過以上程式碼發現,Object類中的toString()方法只是簡單輸出當前所引用的類名稱以及物件地址。(而這是所有物件都共同具備的特徵)。如若覺得預設給出的toString()方法功能不足,就在需要的子類上覆寫toString()方法。
class Test{ public static void main(String[] args) { fun(new Person("張三",25) ); } public static void fun(Object obj) { System.out.println(obj.toString()); } } class Person{ private String name ; private int age; public Person(String name,int age){ this.name = name; this.age = age; } @Override public String toString(){ return "姓名:"+name + " 年齡:"+age; } }//輸出 姓名:張三 年齡:25
2.equlas()——物件比較
class Test{ public static void main(String[] args) { Person per1 = new Person("張三",20); Person per2 = new Person("張三",20); System.out.println(per1.equals(per2)); } } class Person{ private String name; private int age; public Person(String name,int age){ this.age = age; this.name = name; } @Override public boolean equals(Object obj) { //1.首先判斷obj是否是Person類物件 if(!(obj instanceof Person)){ return false; } //2.判斷當前物件是否和傳入物件地址相同 if(this == obj){ return true; } //3.obj確實是Person類物件,比較兩者屬性內容 //向下轉型取得Person的屬性值 Person per = (Person) obj; return ((this.name.equals(per.name) && this.age == per.age)); } }
二、接收引用資料型別
在之前已經分析了Object可以接收任意的物件,因為Object是所有類的父類,但是Obejct並不侷限於此,它可以接
收所有資料型別,包括:類、陣列、介面。
使用Object來接受陣列物件:
public class Test {
public static void main(String[] args) {
// Object接收陣列物件,向上轉型
Object obj = new int[]{1,2,3,4,5,6} ;
// 向下轉型,需要強轉
int[] data = (int[]) obj ;
for(int i :data){
System.out.println(i+"、");
}
}
}
使用Object接收介面物件:
interface IMessage {
void getMessage();
}
class MessageImpl implements IMessage {
@Override
public String toString() {
return "Hello" ;
}
@Override
public void getMessage() {
System.out.println("World");
}
}
public class Test {
public static void main(String[] args) {
IMessage msg = new MessageImpl(); // 子類向父介面轉型
Object obj = msg; // 介面向Obejct轉型
System.out.println(obj);
IMessage temp = (IMessage) obj; // 強制型別轉換
temp.getMessage();
}
}
Object真正達到了引數的統一,如果一個類希望接收所有的資料型別,就是用Object完成。