這篇先記錄最近改報表所踩到雷
一直以為我覺得 class member 也可以做 java Overwrite
但 overwrite 好像是指 method
在做繼承方發一想不到事情
1 | public class A{ |
結果印出應該是 3
但是把 usertype=2 跟 usertype=3 前面注解拿掉
印出來的東西會是0
這個雷…
做後原本想做 js 做做看
JS class 不能用 class member…
發現 typescript 也不行
可能真的在 class member 轉 function 行不通
又好奇試試 PHP
結果發現跟 JAVA 完全不一樣的結果
PHP
1 |
|
PHP class 比較像 JAVA,但結果不一樣…,我感到意外
不過…抽象類別 裡面方法不能用抽象 function
詳細抽象類別(Abstract Class) · PHP 學習筆記
python,golang 我就不試了 orz
D2:[Java]類別的繼承(基本範例解說) - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
2019-02-21
今天剛好做 PHP 有關 class,突然想到 Java 之前遇到的問題還沒有理解為什麼
感覺this
是參照原本 method 那一層的(這一點跟 PHP self 很像,\$this 是實例物件)
所以一直抓到父層 A
,沒有解決抓到在C
這解決方法除了寫在建構式,寫在子層static
也能解決
我原先的錯誤想法
在想是因為 extends,所以父層 function 複製到子層那邊去
其實用參照(reference)的方法想就很好懂了
1 | class Son extends Dad { |
inheritance - Is there a way to override class variables in Java? - Stack Overflow
難怪最近看到有一個程式
宣告 class 裡面的變數
都不會直接給值,都寫在 constructor
也許子層不需要再重新宣告父層有的變數
複寫都在constructor
可能會比較好
這可能是最好的良好習慣
參考來源:
- 關於 this
- this 與 final
- 通过 static 关键词来实现 late static binding(静态调用绑定)-pilishen.com,做全球最好的实战教程
- 繼承
- [java 程式筆記]建構子 Constructor - 觀念與例題研究 @ 貓羽的文字日誌 :: 痞客邦 ::
- inheritance - Accessing inherited class variables in java - Stack Overflow
- JWorld@TW Java 論壇 - 建構子??
- inheritance - Is there a way to override class variables in Java? - Stack Overflow
- override - Overriding member variables in Java - Stack Overflow
- JAVA
- [PHP 觀念]self 和\$this 的差異 @ 麥克的學習紀錄 :: 痞客邦 ::