程式設計思想第七章

2021-08-20 02:29:40 字數 3491 閱讀 2742

過載:相同的返回值,相同的函式名稱,不同的引數列表。

@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也可以這樣理解,通過 前的元素查詢到冒號後的元素。為什麼說字典是唯一乙個對映型別呢?看圖。對映型別區別與序列...