過載:相同的返回值,相同的函式名稱,不同的引數列表。
@override註解是jdk1.5之後的產物,可以防止你在不想過載時而意外的進行過載
//因為父類沒有這個過載方法,所以不能用這個註解
7.1復用**的三種方式:
1,直接new關鍵字建立該類物件,組合;優點:快速方便;缺點:生成和銷毀物件,給效能帶來額外開銷。
2,繼承該類;優點:通用,把大量常用的函式集合到一起,減少其他類的重複**;缺點:其他類與基類型別不同,違反了一類事物的特點。比如鳥類,繼承飛機,只為了實現乙個飛行功能,這明顯不符合一類事物特徵的繼承規則。
3,**:內建該類的物件,重寫方法,底層呼叫物件的方法實現。
組合:既不是is-a的關係,也不是like-a的關係;單純想呼叫其他已有類的功能,如無特殊需要,建議該物件私有化;
繼承:is-a的關係;狗屬於動物;統屬於乙個型別;
介面:like-a的關係;飛機在天上像乙隻大鳥;區域性功能相同
7.6protected關鍵字
既想對外部隱藏,又允許子類訪問的時候,該關鍵字就起作用。
繼承:當重寫了基類的方法實現時,就不會執行基類的方法,而執行匯出類重寫的方法。反之,執行基類的方法。無論如何,當用到匯出類時,基類都會呼叫構造器的方法執行初始化。
7.8 final關鍵字 「無法改變的」,主要出於兩種原因:設計或效率。注意:static只強調乙份;
//由於都是基本資料型別,都可以當常量使用,而第三個是典型的常量定義方式
public final int value_one = 9;
public static final int value_two = 99;
public static final int value_three = 39;
// system.out.println(rand.nextint(20)); //15
// 也就是final修飾的基本型別,當被物件引用的時候,是可以改變的,而static只有乙個,並且只載入一次
private final int i4 = rand.nextint(20);
static final int int_5 =rand.nextint(20);
private value v1 = new value(11); //物件的引用可以改變
private final value v2 = new value(22);
private static final value val_3 = new value(33);
private final inta = ;
@override
public string tostring()
public static void main(string args)
// system.out.println(fd1);
// system.out.println("建立乙個新的物件");
finaldate fd2 = new finaldate("fd2");
// system.out.println(fd1);
// system.out.println(fd2);
finaldate fd3 = new finaldate("fd3");
// system.out.println(fd1);
// system.out.println(fd2);
// system.out.println(fd3);}}
final作用於基本型別相對於物件引用來說,用處更大。
final 資料:常量,定義一塊資料,是不變的。通常是基本資料型別;表示引數可以讀取,但是不能修改,主要用來向匿名內部類傳遞資料。
final 方法:兩個目的,1,禁止被子類覆蓋重寫此方法;2.為了效率,宣告為final後,就不會插入這段**而是直接呼叫方法,這將消除方法呼叫的開銷,不過最近的jdk已經優化了,不需要為了效率,而使用final方法。
final 類:當類整體定義為final時,該類的所有方法都隱式的為final,為了禁止別的類繼承。不需要做任何變動,出於安全考慮。
繼承:訪問乙個類,當發現extends 繼承關鍵字的時候,不管是否建立該類的物件,都將對它的基類進行載入。載入動作只執行一次,並且對基類靜態成員的訪問,也都有可能引起載入。就算不訪問,也會載入基類的靜態訪問。
package com.jicheng.test;
public class beetle extends insect
private static int x2 = printinint("x2 + +靜態初始化");
public static void main(string args)
}class insect
private static int x1 = printinint("x1 + 靜態初始化");
static int printinint(string s)
} /**out x1 + 靜態初始化
x2 + +靜態初始化
beetle 構造器
package com.meiju;
public class enumorder
}}
列舉:當我們需要群組並使用時,首先建立乙個整型常量集,但是列舉取值不會限制在常量集範圍內。
package com.meiju;
public class spicinessenumuser
}
package com.meiju;
public class enumorder
}}
package com.meiju;
public class burrito
public void describe()
} public static void main(string args)
}
可以應用於switch中。 《java程式設計思想》第七章回顧
一 一開始就提出了復用 的兩大思路 組合 在新類中產生現有類的物件 和繼承 按照現有類的方式建立新類 二 沒有預設的基類構造器,或者想用乙個帶引數的構造器,則必須用super顯式呼叫基類構造器。三 暫時略過 四 向上轉型 把子類轉型為父類。此書認為,需要向上轉型,則用繼承而不是組合。初級版 高階版 ...
第七章程式設計作業
題目內容 完成乙個對候選人得票的統計程式。假設有3個候選人,名字分別為li,zhang和fun。使用結構體儲存每乙個候選人的名字和得票數。記錄每一張選票的得票人名,輸出每個候選人最終的得票數。結構體可以定義成如下的格式 struct person leader 3 輸入格式 第一行有乙個整數n,表示...
python第七章 python教程(第七章)
字典和集合 字典是python中唯一,乙個對映型別 如何建立乙個字典,如下 dict dict 滲透 網路安全 怎麼理解字典呢?現實生活中的字典可以通過首字母進行查詢要查詢的漢子,python也可以這樣理解,通過 前的元素查詢到冒號後的元素。為什麼說字典是唯一乙個對映型別呢?看圖。對映型別區別與序列...