java,aggregation
<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
java aggregation是什麼,讓我們一起了解一下?
aggregation是association裏的一個特殊的分類,aggregation裏的關係只能是單向的,而association單向和雙向均可。java中的aggregation就是建立了一個類,然後在其他地方引用來使用。
舉個例子,比如有兩個類是Student和Address,在特定情境下,每一個student的對象一定包含了一個Address的對象,而每一個address可以只含有街道名稱或是門牌號,不一定是個學生的地址,所以不一定需要student的一個對象作為屬性,因此這裏就是aggregation。
實戰操作:
package com.ray.ch05;public class Test {public static void main(String[] args) {}}
package com.ray.ch05;public class Test2{public static void main(String[] args) {new Test();}}
建立了Test這個類,我們可以在程序的任何地方new出來,就好像在Test2裏面new一樣,這樣其實就是最簡單的聚合複用。
但是,我們在複用的時候需要注意一點,就是對象的初始化問題。
我們修改一下上面的代碼:
package com.ray.ch05; public class Test {public void say() {//增加了一個公共方法System.out.println("method say");} public static void main(String[] args) {}}
package com.ray.ch05; public class Test2 {private Test test;//引用Test private void runSay() {test.say();} public static void main(String[] args) {new Test2().runSay();}}
運行輸出:
Exception in thread "main" java.lang.NullPointerException at com.ray.ch05.Test2.runSay(Test2.java:7) at com.ray.ch05.Test2.main(Test2.java:11)
空指針錯誤,因為我們在Test2裏面沒有實例化對象test,而默認的編譯器只是初始化為null,因此會有運行時錯誤。
因此,我們必須注意對象的初始化,因為它們不像基礎類型那樣,編譯器默認賦值。這個是編譯器的優化策略。
所以,我們Test2上面的代碼必須把Test這個類的對象實例化出來。
package com.ray.ch05; public class Test2 {private Test test=new Test(); private void runSay() {test.say();} public static void main(String[] args) {new Test2().runSay();}}
重新運行輸出:
method say
-
蘋果手機長圖怎麼截圖,蘋果手機截長圖的兩種方法
1、長截圖辦法一iOS13上新之後自帶的長截圖方法,是在我們瀏覽網頁的時候使用的。操作方法:上音量鍵+開關鍵一起按下,然後點開截好的圖片,選擇“整頁”截圖即可。2、長截圖方法二利用QQ實現長截圖。操作方法:首先就是需要我們打開QQ,然後試着上音量鍵+開關鍵一起按下...
-
省內移動數據流量是指什麼
省內移動數據流量是指你的SIM卡所屬省份的可用GPRS流量,如果出了你的卡所屬的省份,去別的省,那省內移動數據流量就不可以使用,只能使用全國通用流量。移動數據流量有省內流量和全國通用流量,國內流量和省內流量是有所區別的。首先優先度不同:正常情況下,如果用户在自...
-
關於底噪的意思介紹
1、底噪亦稱背景噪聲,基本所有的好耳機都有底噪,耳機底噪一般都是因為前端的問題,耳機的靈敏度越高對於底噪就越敏感,一些高靈敏度和低阻抗的耳機會把底噪放大,如果加大音量的情況下,底噪會更加的明顯。2、檢測MP3底噪,一般方法是在夜晚等比較安靜的環境中戴上耳機,播...
-
黑色背景拍照竅門詳解
1、調整拍攝角度,尋找背景:既然是拍攝黑背景,在拍攝前我們儘量選擇深色的背景,這樣也就更加容易達到效果。不過深色不一定要是純黑色,只要顏色較為深沉,偏向暗色調的均可。拍攝前多多觀察,尋找不同的拍攝角度,以找到有反差的深色作為背景。要多嘗試不同的角度,直至主體...