Java類與匿名內部類

大雄45發表於2021-02-21
導讀 大家好,這篇文章我們主要向大家介紹Java基礎中的Object類、匿名內部類、構造方法的繼承知識,一起來學習下吧!
一、Object類

Object類是所有類的父類,所有類都繼承Object類。

Object類方法:

toString()方法:這個方法用的比較多,它是返回該物件的字串,一般子類會覆蓋;
getClass()方法:返回Object執行的型別;
equals()方法:判斷物件的內容是否相等;
finalize()方法:這個方法主要用來釋放資源。這個方法用的少,無法確定什麼時候呼叫。
hashCode()方法:返回這個物件的雜湊值;
notify()方法:這個方法是喚醒在這個物件上等待的某個執行緒;
notifyAll()方法:這個方法是喚醒在這個物件上等待的所有執行緒;
wait()方法:當前執行緒等待這個物件的鎖,它是具有這個物件的鎖。wait()方法表示一直等待,一直到得到鎖或被中斷。wait(long timeout)設定一個超時間隔,如果在規定時間內沒有獲得鎖就返回。
clone()方法:保護方法,實現物件的淺複製。當實現了Cloneable介面才能夠呼叫這個方法,不然會丟擲異常。

Object類的例子

例如:

//定義水果類 
class Fruit{ 
double weight=10;//定義weight屬性為重量 
//定義info()方法 
void info(){ 
        System.out.println("我是一個水果,重量為:"+weight+"g!"); 
  } 
} 
public class p32 { 
public static void main(String[] args) { 
        // TODO Auto-generated method stub 
        Fruit f=new Fruit();//建立Fruit類物件 
        System.out.println(f.toString());//呼叫toString方法 
  } 
}

執行的結果是:

Java類與匿名內部類Java類與匿名內部類

從上面程式碼中,在輸出的語句中是呼叫了Fruit物件的toString()方法。這個Fruit類是繼承Object類,在Object定義了toString()方法,輸出這個物件的資訊。

重寫Object類toString()方法例子
//定義水果類 
class Fruit{ 
    double weight=10;//定義weight屬性為重量 
    //重寫Object類的toString()方法 
    public String toString(){ 
        return "我是一個水果,重量為:"+weight+"g!"; 
  } 
} 
public class p32 { 
    public static void main(String[] args) { 
        // TODO Auto-generated method stub 
        Fruit f=new Fruit();//建立Fruit類物件 
        System.out.println(f.toString());//呼叫toString方法 
  } 
}

執行的結果是:

Java類與匿名內部類Java類與匿名內部類

從上面程式碼中,在定義的水果類中重寫Object類的toString()方法,Fruit類是繼承Object類,輸出該物件的資訊。

二、匿名內部類
什麼是匿名內部類

匿名內部類簡單來說就是不知道這個類的名字。建立匿名內部類,只要呼叫一次就可以了。

匿名內部類的語法
new 類名(引數) | 父介面() {  
// 匿名內部類的類體部分  
}
如何實現匿名內部類例子
//定義水果類介面 
interface Fruit{ 
    double weight=30;//定義weight屬性為重量 
    void info();//定義抽象方法 
} 
public class p33 { 
    public static void main(String[] args) { 
        // TODO Auto-generated method stub 
        //定義匿名內部類作為引數傳給fruitInfo()方法 
        fruitInfo(new Fruit(){ 
            //實現info()方法 
            public void info(){ 
                System.out.println("我是一個水果,重量為"+weight+"g!"); 
            } 
        }); 
} 
    //定義靜態方法fruitInfo() 
    public static void fruitInfo(Fruit f){ 
        f.info();//呼叫物件f的info()方法 
  } 
}

執行的結果是:

Java類與匿名內部類Java類與匿名內部類

從上面程式碼中,首先是定義了水果類介面,定義了weight屬性和info()抽象方法。在呼叫fruitInfo方法,把方法的引數寫在new Fruit(){}相當於例項化物件,把物件傳給fruitInfo方法。在大括號裡面是子類匿名。

三、構造方法的繼承
構造方法的繼承的特點

① 子類是可以無條件地繼承父類的無引數的構造方法;

② 如果子類自己沒有構造方法,將繼承父類的無引數構造方法成為自己的構造方法;如果子類自己定義了構造方法,當在建立新物件時,它將先執行繼承父類的無引數構造方法,然後再執行自己的構造方法。

③ 對於父類的含引數的構造方法,子類在自己構造方法中用“super”關鍵字來呼叫它,在這個呼叫語句需要是子類構造方法的第一個可執行語句。

構造方法的繼承例子
//定義父類 
class Father{ 
    public Father(){ 
        System.out.println("父類..."); 
} 
    public Father(String name){ 
        System.out.println("父類名字為:" + name); 
} 
} 
//定義子類繼承父類 
class Son extends Father{ 
    public Son(){ 
        super("Tom"); 
        System.out.println("子類..."); 
  } 
} 
 
public class p39 { 
    public static void main(String[] args) { 
        // TODO Auto-generated method stub 
        Son son = new Son();//建立Son的例項物件 
  } 
}

執行的結果是:

Java類與匿名內部類Java類與匿名內部類

四、總結

本文主要介紹了Object類、匿名內部類、構造方法的繼承。

Object類是所有類的父類,所有類都繼承Object類。介紹了Object類的一些方法,透過Object類例子和重寫Object類toString()方法例子幫助理解用法。

匿名內部類簡單來說就是不知道這個類的名字。建立匿名內部類,只要呼叫一次就可以了。

構造方法的繼承介紹了它的特點,透過他的例子來了解這個構造方法的繼承。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2758068/,如需轉載,請註明出處,否則將追究法律責任。

相關文章