Java復習_4 接口多態和內部類,_4多態
△abstract不可以修飾成員變量
△一個類可以沒有抽象方法,可以定義為抽象類,這樣的目的是不能讓其他類建立本類對象,交給子類完成.
△abstract和static(可以被類名調用方法,但是抽象方法調用沒有意義)final(不能被覆蓋方法)private(私有方法無法覆蓋)
△接口只能被實現.被用接口去繼承或者用類或者抽象類去實現
△接口中定義的變量全部是常量.關鍵修飾符為Public static final.接口中沒有構造方法,實現接口的類構造方法訪問的是object,接口中的方法是Public,因此實現需要注意一定是public
△接口可以沒有需要實現的方法.
△接口與類是實現關系,接口與接口之間是繼承關系,可以多繼承.
△抽象類:被繼承體現的是is a關系.定義了共性的功能
接口是like a關系,定義的是擴展功能
△ javac-d<my_dir> Myprogram.java:就是將Myprogram.java程序裡產生的 .class 文件放在 my_dir 目錄裡,用於生成類文件的包..可以javac -d .Myprogram.java.(當前路徑下生成類文件的包)
△import導入*,代表代表通配符,它會在包下挨個匹配,找到後就導入.
△
訪問權限:
本類 同一包內的子類和無關類 不同包下的子類 不同包下的無關類
private Y N N N
default Y Y N N
protected Y Y Y N
public Y Y Y Y
△內部類:
Outer.Inner oi=new Outer().new Inner();
內部類可以直接訪問外部類的私有成員.
靜態內部類:
Outer.Inner oi=new Outer.Inner();
方法中的局部內部類訪問局部變量局部變量必須要加final修飾.因為當調用這個方法的時候,局部變量如果沒有被final所修飾的話,他的生命周期應當和方法的生命周期是一樣的,方法彈棧的時候,局部變量將會消失,這時候如果局部內部類沒有被回收走,想要去使用這個方法的時候,就會產生問題.
△匿名內部類只有重寫單個方法的時候使用.
△當內部類是成員的時候,要再主函數中訪問它,必須要加static
△當重寫equals方法時,注意參數是Object,否則就不是重寫而是重載了.
△equals與==的區別:equal只能對於引用數據類型進行比較,但是==號能對引用數據類型和基本數據類型都進行比較,equals底層依賴的就是==,一般需要重寫equals方法.
△Scanner hasnextInt()判斷接下來的數是否是整數,判斷後,在調用nextInt():獲取輸入的整數,.標准格式如下:
if(i.hasnextInt()) {
int x=i.nextInt();
}
當nextInt()和nextLine()作組合的時候,nextInt()在前面的時候,nextInt()獲取整數後,不會再獲取回車符,因此會被nextLine()所獲取而得知該行已結束,因此不會再輸出其他內容.
解決方案1:創建兩次Scanner對象2.都用nextLine()方法,隨後在轉換為整數.