Java基礎(chǔ)入門之Object類、匿名內(nèi)部類、構(gòu)造方法的繼承解析
前言
大家好,我是Java進(jìn)階者。這篇文章我們主要介紹Java基礎(chǔ)中的Object類、匿名內(nèi)部類、構(gòu)造方法的繼承知識(shí),一起來(lái)學(xué)習(xí)下吧!
一、Object類
1.Object類是所有類的父類,所有類都繼承Object類。
2.Object類方法有:
toString()方法:這個(gè)方法用的比較多,它是返回該對(duì)象的字符串,一般子類會(huì)覆蓋;
getClass()方法:返回Object運(yùn)行的類型;
equals()方法:判斷對(duì)象的內(nèi)容是否相等;
finalize()方法:這個(gè)方法主要用來(lái)釋放資源。這個(gè)方法用的少,無(wú)法確定什么時(shí)候調(diào)用。
hashCode()方法:返回這個(gè)對(duì)象的哈希值;
notify()方法:這個(gè)方法是喚醒在這個(gè)對(duì)象上等待的某個(gè)線程;
notifyAll()方法:這個(gè)方法是喚醒在這個(gè)對(duì)象上等待的所有線程;
wait()方法:當(dāng)前線程等待這個(gè)對(duì)象的鎖,它是具有這個(gè)對(duì)象的鎖。wait()方法表示一直等待,一直到得到鎖或被中斷。wait(long timeout)設(shè)定一個(gè)超時(shí)間隔,如果在規(guī)定時(shí)間內(nèi)沒(méi)有獲得鎖就返回。
clone()方法:保護(hù)方法,實(shí)現(xiàn)對(duì)象的淺復(fù)制。當(dāng)實(shí)現(xiàn)了Cloneable接口才能夠調(diào)用這個(gè)方法,不然會(huì)拋出異常。
3.Object類的例子
例如:
- //定義水果類
- class Fruit{
- double weight=10;//定義weight屬性為重量
- //定義info()方法
- void info(){
- System.out.println("我是一個(gè)水果,重量為:"+weight+"g!");
- }
- }
- public class p32 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Fruit f=new Fruit();//創(chuàng)建Fruit類對(duì)象
- System.out.println(f.toString());//調(diào)用toString方法
- }
- }
運(yùn)行的結(jié)果是:
從上面代碼中,在輸出的語(yǔ)句中是調(diào)用了Fruit對(duì)象的toString()方法。這個(gè)Fruit類是繼承Object類,在Object定義了toString()方法,輸出這個(gè)對(duì)象的信息。
4.重寫(xiě)Object類toString()方法例子
- //定義水果類
- class Fruit{
- double weight=10;//定義weight屬性為重量
- //重寫(xiě)Object類的toString()方法
- public String toString(){
- return "我是一個(gè)水果,重量為:"+weight+"g!";
- }
- }
- public class p32 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Fruit f=new Fruit();//創(chuàng)建Fruit類對(duì)象
- System.out.println(f.toString());//調(diào)用toString方法
- }
- }
運(yùn)行的結(jié)果是:
從上面代碼中,在定義的水果類中重寫(xiě)Object類的toString()方法,F(xiàn)ruit類是繼承Object類,輸出該對(duì)象的信息。
二、匿名內(nèi)部類
1.什么是匿名內(nèi)部類
匿名內(nèi)部類簡(jiǎn)單來(lái)說(shuō)就是不知道這個(gè)類的名字。創(chuàng)建匿名內(nèi)部類,只要調(diào)用一次就可以了。
2.匿名內(nèi)部類的語(yǔ)法
- new 類名(參數(shù)) | 父接口() {
- // 匿名內(nèi)部類的類體部分
- }
3.如何實(shí)現(xiàn)匿名內(nèi)部類例子
- //定義水果類接口
- interface Fruit{
- double weight=30;//定義weight屬性為重量
- void info();//定義抽象方法
- }
- public class p33 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- //定義匿名內(nèi)部類作為參數(shù)傳給fruitInfo()方法
- fruitInfo(new Fruit(){
- //實(shí)現(xiàn)info()方法
- public void info(){
- System.out.println("我是一個(gè)水果,重量為"+weight+"g!");
- }
- });
- }
- //定義靜態(tài)方法fruitInfo()
- public static void fruitInfo(Fruit f){
- f.info();//調(diào)用對(duì)象f的info()方法
- }
- }
運(yùn)行的結(jié)果是:
從上面代碼中,首先是定義了水果類接口,定義了weight屬性和info()抽象方法。在調(diào)用fruitInfo方法,把方法的參數(shù)寫(xiě)在new Fruit(){}相當(dāng)于實(shí)例化對(duì)象,把對(duì)象傳給fruitInfo方法。在大括號(hào)里面是子類匿名。
三、構(gòu)造方法的繼承
1.構(gòu)造方法的繼承的特點(diǎn):
① 子類是可以無(wú)條件地繼承父類的無(wú)參數(shù)的構(gòu)造方法;
② 如果子類自己沒(méi)有構(gòu)造方法,將繼承父類的無(wú)參數(shù)構(gòu)造方法成為自己的構(gòu)造方法;如果子類自己定義了構(gòu)造方法,當(dāng)在創(chuàng)建新對(duì)象時(shí),它將先執(zhí)行繼承父類的無(wú)參數(shù)構(gòu)造方法,然后再執(zhí)行自己的構(gòu)造方法。
③ 對(duì)于父類的含參數(shù)的構(gòu)造方法,子類在自己構(gòu)造方法中用“super”關(guān)鍵字來(lái)調(diào)用它,在這個(gè)調(diào)用語(yǔ)句需要是子類構(gòu)造方法的第一個(gè)可執(zhí)行語(yǔ)句。
2.構(gòu)造方法的繼承例子:
- //定義父類
- 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();//創(chuàng)建Son的實(shí)例對(duì)象
- }
- }
運(yùn)行的結(jié)果是:
四、總結(jié)
本文主要介紹了Object類、匿名內(nèi)部類、構(gòu)造方法的繼承。
Object類是所有類的父類,所有類都繼承Object類。介紹了Object類的一些方法,通過(guò)Object類例子和重寫(xiě)Object類toString()方法例子幫助理解用法。
匿名內(nèi)部類簡(jiǎn)單來(lái)說(shuō)就是不知道這個(gè)類的名字。創(chuàng)建匿名內(nèi)部類,只要調(diào)用一次就可以了。
構(gòu)造方法的繼承介紹了它的特點(diǎn),通過(guò)他的例子來(lái)了解這個(gè)構(gòu)造方法的繼承。
本文轉(zhuǎn)載自微信公眾號(hào)「Java進(jìn)階學(xué)習(xí)交流」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Java進(jìn)階學(xué)習(xí)交流公眾號(hào)。