Jafe Lee
BlogJava
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
::
49 隨筆 :: 0 文章 :: 24 評論 :: 0 Trackbacks
<
2007年7月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(5)
給我留言
查看公開留言
查看私人留言
隨筆分類
(50)
Book Notes-- Java Puzzlers(4)
(rss)
Book Notes--Dive Into Python(4)
(rss)
C++(3)
(rss)
Database(12)
(rss)
Groovy(4)
(rss)
J2EE(1)
(rss)
Java(18)
(rss)
Other Techs(3)
(rss)
Python(1)
(rss)
Software Engineering
(rss)
隨筆檔案
(46)
2008年6月 (3)
2007年12月 (3)
2007年10月 (1)
2007年9月 (18)
2007年8月 (11)
2007年7月 (3)
2007年5月 (7)
文章分類
Groovy
(rss)
Java News
(rss)
Java/J2EE
(rss)
Linux
(rss)
Python
(rss)
搜索
最新評論
1.?re: Java Interface
@R.X.B
手敲錯了,這樣子時可以的,樓主可以試一下
--R.X.B
2.?re: Java Interface
int x = 20; //int x; 是不允許的
--R.X.B
3.?re: Visual Studio 2005 Express 下的 WinPcap 配置
哥們,謝謝~!
--HeroBack
4.?re: Visual Studio 2005 Express 下的 WinPcap 配置
請加入ws2_32.lib靜態庫
--bunter
5.?re: MatLab運算符
我們專業選修時我報了MatLab,第一個星期老師無故說不用上,第二個星期無故說不用上,第三個星期開始我們放假了,到現在我還不知道它是什么東東...好像說是跟C++有關的,是嗎?看來我完蛋了,sigh
--juna
評論排行榜
1.?MatLab運算符(5)
Java繼承
1、關鍵字super有兩個用途:一是調用超類的方法,而是調用超類的構造器。
super不是對一個對象的引用,不能將super賦給另一個對象變量,它只是一個指示編譯器調用超類方法的特有關鍵字。super在構造器中的作用:
public
?Manager(String?n,?
double
?s,?
int
?year,?
int
?month,?
int
?day)????
{??????
??
super
(n,?s,?year,?month,?day);????
??bonus?
=
?
0
;????
}????
由于構造器不能范圍Employee類的私有域(具體例子見本文最后面PersonTest.java),所以必須利用Employee類的構造器對這部分私有域進行初始化
子
,我們可以通過super實現對超類構造器的調用。
使用super調用構造器的語句必須是
類構造器的第一條語句
。如果之類的構造器沒有顯示的調用超類的構造器,這將自動調用超類默認(沒有參數)的構造器。如果超類沒有不帶參數的構造器,并且在子類的構造器中沒有顯示地調用超類的其它構造器,則Java編譯器將報告錯誤,這個規則對與abstract base class 也是成立的。
2、關鍵字this有兩個用途:一是引用隱式參數,二是調用該類的其它的構造器。在調用構造器時和super很相似,都只能作為另一個構造器的第一條語句出現。
3、多態。先看例子:
Manager?boss?
=
?
new
?Manager(
);
Employee?[]?staff?
=
?
new
?Employee[
3
];
staff[
0
]?
=
?boss;
在這個例子中,變量staff[0]和boss引用同一個對象.但編譯器將staff[0]看待成Employee對象.這意味著可以這樣調用:
boss.setBonus(5000);
但不能這樣調用
staff[0].setBonus(5000);//error,這樣會引起一個編譯錯誤
這是因為staff[0]聲明的類型是Employee,而setBonus不是Empoyee類的方法。
4、動態綁定:
方法的名字和參數列表被稱為方法的簽名(signature).如果在子類中定義了一個與超類簽名相同的方法,那么子類中的這個方法就覆蓋了超類中的這個同簽名的方法。但是,返回類型不是簽名的一部分,因此在覆蓋方法的時候,一定要保證返回類型的兼容性。在JDK 5.0以前的版本中,要求返回類型必須是一樣的。而現在允許子類將覆蓋方法返回類型定義為原返回類型的子類型。例如,假設Employee類有:
public
?Employee?getBuddy(){
}
在后面的子類Manager中,可以按照如下所示的方法覆蓋這個方法:
public
?Manager?getBuddy(){
}?
//
OK?in?JDK?5.0
如果方法是private, static, final或者是構造器,那么編譯器將可以準確地知道應該調用那個方法。我們將這種調用方式稱為靜態綁定。但是,子類不能繼承父類private (方法,更談不上覆蓋)不能覆蓋final修飾的方法,但可一覆蓋static方法
覆蓋一個方法的時候,子類方法不能低于超類方法的可見性。特別是如果超類得方法是public,那么子類方法一定要聲明為public。
posted on 2007-07-22 16:40
Jafe Lee
閱讀(735)
評論(0)
編輯
收藏
所屬分類:
Java
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
Java 正則表達式 (2) -- Metacharacters & Character Classes
Java 正則表達式 (1) -- java.util.regex.* 介紹
Java Thread (1)
Java Enumeration (枚舉類型) (5) -- Value-specific class body
Java Enumeration (枚舉類型) (3) -- 自定義類體(class body)
Java Enumeration (枚舉類型) (2) -- switch語句
Java Enumeration (枚舉類型) (1) -- 基本概念
Java 單元測試
Java點滴 (3)
Java繼承
Powered by:
BlogJava
Copyright © Jafe Lee
主站蜘蛛池模板:
醴陵市
|
本溪
|
吉木乃县
|
茶陵县
|
原阳县
|
盘山县
|
临高县
|
元氏县
|
乐清市
|
昂仁县
|
交城县
|
烟台市
|
珠海市
|
西畴县
|
屏山县
|
三河市
|
大化
|
冀州市
|
陇西县
|
阿图什市
|
丽江市
|
西华县
|
淄博市
|
容城县
|
化州市
|
云和县
|
潞西市
|
登封市
|
呼和浩特市
|
通辽市
|
株洲市
|
勐海县
|
穆棱市
|
赤壁市
|
昂仁县
|
廊坊市
|
鄂尔多斯市
|
防城港市
|
安多县
|
华池县
|
酉阳
|