生活随笔
收集整理的這篇文章主要介紹了
Java学习笔记_多态/内部类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
多態的格式與使用 代碼當中體現多態性,其實就是一句話,父類引用指向子類對象
格式: 父類名稱 對象名 = new 子類名稱(); 或者 接口名稱 對象名 = new 實現類名稱();
public class Demo { public static void main ( String
[ ] args
) { Fu obj
= new Zi ( ) ; obj
. method ( ) ; obj
. methodFu ( ) ; }
}
多態中成員變量的使用特點 訪問成員變量的兩種方式:
直接通過對象名稱訪問成員變量:看等號左邊是誰,優先用誰,沒有則向上找 間接通過成員方法訪問成員變量:看該方法屬于誰,優先用誰,沒有則向上找
public class Demo { public static void main ( String
[ ] args
) { Fu obj
= new Zi ( ) ; System
. out
. println ( obj
. num
) ; System
. out
. println ( obj
. age
) ; obj
. showNum ( ) ; }
}
多態中成員方法的使用特點 在多態的代碼當中,成員方法的訪問規則是: 看new的是誰,就優先用誰,沒有則向上找 口訣:編譯看左邊,運行看右邊
成員變量:編譯看左邊,運行還看左邊 成員方法:編譯看左邊,運行看右邊
public class Demo { public static void main ( String
[ ] args
) { Fu obj
= new Zi ( ) ; obj
. method ( ) ; obj
. methodFu ( ) ;
instantceof關鍵字 對象一旦向上轉型為父類,那么就無法調用子類原本特有的內容
解決方案:用對象的向下轉型還原
public class Demo { public static void main ( String
[ ] args
) { Animal animal
= new Cat ( ) ; animal
. eat ( ) ; Cat cat
= (Cat) animal
; cat
. catchMouse ( ) ;
}
如何才能知道一個父類引用的對象,本來是什么子類? 格式: 對象 instanceof 類名稱 這將會得到有個boolean值結果,也就是判斷前面的對象能不能當作后面類型的實例
public class Demo { public static void main ( String
[ ] args
) { Animal animal
= new Cat ( ) ; animal
. eat ( ) ; if ( animal
instanceof Dog ) { Dog dog
= ( Dog
) animal
; dog
. watchHouse ( ) ; } if ( animal
instanceof Cat ) { Cat cat
= ( Cat
) animal
; cat
. catchMouse ( ) ; } }
}
final關鍵字用于修飾類 當final關鍵字用來修飾一個類的時候,格式: public final class 類名稱{ //… }
含義:當前這個類不能有任何子類 注意:一個類如果是final的,那么其中所有的成員方法都無法進行覆蓋重寫
public final class MyClass { public void method ( ) { System
. out
. println ( “方法執行”
) ;
}
}
final關鍵字修飾成員方法 當final關鍵字用來修飾一個方法的時候,這個方法就是最終方法,也就是不能被覆蓋重寫 格式: 修飾符 final 返回值類型 方法名稱(參數列表){ //方法體 }
注意事項: 對于類、方法來說,abstract關鍵字和final關鍵字不能同時使用,因為矛盾
public abstract void methodAbs ( ) ;
final關鍵字修飾局部變量 final關鍵字代表最終的、不可改變的
常見的四種用法:
可以用來修飾一個類 可以用來修飾一個方法 可以用來修飾一個局部變量 可以用來修飾一個成員變量
public class Demo { public static void main ( String
[ ] args
) { int num1
= 10 ; System
. out
. println ( num1
) ; num1
= 20 ; System
. out
. println ( num1
) ; final int num2
= 200 ; System
. out
. println ( num2
) ; final int num3
; num3
= 300 ; Student stu1
= new Student ( name
: ”zhangsan”
) ; System
. out
. println ( stu1
) ; System
. out
. println ( stu1
. getName ( ) ) ; final Student stu2
= new Student ( name
: ”lisi”
) ; System
. out
. println ( stu
. getName ( ) ) ; stu2
. setName ( “wangwu”
) ; System
. out
. println ( stu2
. getName ( ) ) ; } }
final關鍵字用于修飾成員 對于成員變量來說,如果使用final關鍵字修飾,那么這個變量照樣是不可變的
由于成員變量具有默認值,所以使用了final之后必須手動賦值,不會再給默認值 對于final的成員變量,要么使用直接賦值,要么通過構造方法賦值 必須保證類當中所有重載的構造方法,都最終會對final的成員變量進行賦值
public class Person { private final String name
; public Person ( ) { name
= “zhangsan”
; }
}
成員內部類
成員內部類的定義格式
修飾符 class 外部類名稱{ 修飾符 class 內部類名稱{ // … } // … }
注意:內用外,隨意訪問;外用內,需要內部類對象
使用成員內部類的方式:
間接訪問:在外部類當中訪問,使用內部類;然后main只是調用外部類的方法 直接方式:公式類名稱 對象名 = new 類名稱(); 外部類名稱.內部類名稱 對象名 = new 外部類名稱().new 內部類名稱();
public class Demo { public static void main ( String
[ ] args
) { Body body
= new Body ( ) ; body
. methodBody ( ) ; Body
. Heart heart
= new Body ( ) . new Heart ( ) ; heart
. beat ( ) ; }
}
內部類的同名變量訪問 如果出現了重名現象,那么格式是:外部類.this.外部類成員變量名
public class Outer { int num
= 10 ; public class Inner { int num
= 20 ; public void methodInner ( ) { int num
= 30 ; System
. out
. println ( num
) ; System
. out
. println ( this . num
) ; System
. out
. println ( Outer
. this . num
) ; } }
}
局部內部類的定義 定義格式: 修飾符 class 外部類名稱 { 修飾符 返回值類型 外部類方法名稱(參數列表{ class 局部內部類名稱{ // … } } }
局部內部類的final問題
局部內部類,如果希望訪問所在方法的局部變量,那么這個局部變量必須是有效final的 備注:從Java8開始,只要局部變量事實不變,那么final關鍵字可以省略
匿名內部類 如果接口的實現類(或者是父類的子類)只需要使用唯一的一次 那么這種情況下就可以省略掉該類的定義,而改為使用匿名內部類
匿名內部類的定義: 接口名稱 對象名 = new 接口名稱(){ //覆蓋重寫所有抽象方法 }
public class Demo { public static void main ( String
[ ] args
) { MyInterface obj
= new MyInterface ( ) { public void method ( ) { System
. out
. println ( “匿名內部類實現了方法”
) ;
} } ;obj
. method
; }
}
匿名內部類,在創建對象時,只能使用唯一一次 如果希望多次創建對象,而且類的內容一樣的話,那么就必須使用單獨定義的實現類 匿名對象,在調用方法的時候,只能調用唯一一次 如果希望同一個對象,調用多次方法,那么必須給對象起個名字 匿名內部類是省略實現類/子類名稱,但是匿名對象是省略了對象名稱
總結
以上是生活随笔 為你收集整理的Java学习笔记_多态/内部类 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。