Java学习笔记2021.1.9
我不是很清楚為什么拋出異常只能下面這種寫法?
?public void setAge(Integer age) {if (age < 0) {throw new ArithmeticException("the age is illegae");}this.age = age;}而不能用這種寫法
?public void setAge(Integer age) {if (age < 0) {throw new IllegalArgumentException("the age is illegae");}this.age = age;}個人理解中的泛化處理是將一個個子類轉化成基類進行處理問題,這樣做的好處就是在處理一些共有的問題時,不需要著眼于具體的數據類型進行操作,只需要把算法的邏輯搞清楚就好
面向對象的思想其實我也不是很清楚我到底理解了沒有,所以錯了勿怪,在我的理解中,我們假設這樣的一個出題場景,我選擇的一個解幾何題目的場景,在我的理解中面向過程的解決方案就是通過對題目條件的推演,不斷逼近最后結果的一個過程,就像歐幾里得幾何學不斷地推導過程,則是我將這道題分解為一個圓形,一個正五邊形,一個三角形來進行解析,通過對這些圖形的
將包中的類加載出來有兩種解決方案,一種是直接加上。這種形式,但是它的加載速度比較慢,還有一種則是直接。類名的方式,這種加載速度更快,并且如果加載兩個包中有相同的類的話,另一種用。的不會被加載出來
對于static我的理解是,首先它是類變量,不是單個實例的變量,而類實際上在給java虛擬機編譯運行的過程中,類就應該被加載出來的,就比如單例模式中的餓漢式構建方法.然后如果是從c的角度去理解的話,實際上static和c語言中的靜態其實差不多,實際就是給定了一個地址,并且這個地址空間不會動,其他程序部分也都可以對它進行訪問,而java不過是將這種特性進一步進行了優化,使它覆蓋到了方法和類上而已
目前對java的類的理解是將其和c的結構體聯系起來,實際上都是提前打好了一個框架,并且在程序運行的過程中進行加載,但是如果你沒有實例出一個對象,那這個對象白打,但是程序中依舊存在這個對象的框架,并且它的靜態變量和靜態方法也是存在的,且若為public還可以直接調用
有關于java的接口,我其實以前一直以為接口這玩意是說某個類實現了一個方法以后,可以通過接口直接導入到另一個和它非繼承關系的類中來著,然后我試著寫了下,發現運行錯誤,查了查,發現實際上也只有繼承可以省去寫這些代碼
關于java的接口,可以直接加個default關鍵字,這么寫可以避免實現接口的時候要實現所有的方法,然后java的接口,如果想構造個接口實例出來,可以通過已經實現了接口的對象來完成所需要的操作,然后還有一個靜態的方法體,用法其實和類中的方法體差不多,可以直接通過接口直接訪問
不過為什么在一個有接口的類中,要利用接口.super.默認方法這種格式的邏輯我還是沒搞的太清楚,感覺怪怪的,后面想了想,可能是因為接口的本質邏輯沒變的原因,接口中的方法都是需要別的來實現的,本人猜測可能是通過了接口的父類進行了繼承之類的操作得來的.
關于多接口中重名默認方法處理的解決方案:1.直接在實現類中自己定義一個方法2.如果是這樣的實現類extend父類 implements 接口,注意下,如果父類和接口中的默認方法相同(指方法名),那么不會去管接口中的方法,而是直接調用父類的方法
有一種調用實現類的方法是這種的 new 構造器().方法(),這么做是沒有問題的,就奇怪了點
?public class A {public static void main(String[] args) {C c = new B();c.a();c.b();c.asd();C.asjkd();?new B().asd();?}}總結
以上是生活随笔為你收集整理的Java学习笔记2021.1.9的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算法学习笔记2022.1.8
- 下一篇: java读取excel数据_Java读取