面向?qū)ο蟪绦蛟O(shè)計(jì)教案_第1頁
面向?qū)ο蟪绦蛟O(shè)計(jì)教案_第2頁
面向?qū)ο蟪绦蛟O(shè)計(jì)教案_第3頁
面向?qū)ο蟪绦蛟O(shè)計(jì)教案_第4頁
面向?qū)ο蟪绦蛟O(shè)計(jì)教案_第5頁
已閱讀5頁,還剩92頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

2013-2014學(xué)年第二學(xué)期課程教案課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)課程類型:理論課()理實(shí)一體課(√)實(shí)踐課()授課教師(簽字):石剛教務(wù)處制2014年2月面向?qū)ο蟪绦蛟O(shè)計(jì)開發(fā)環(huán)境教案一、教學(xué)概要課題名稱面向?qū)ο蟪绦蛟O(shè)計(jì)理論課時(shí)2課時(shí)教學(xué)對(duì)象13計(jì)算機(jī)應(yīng)用技術(shù)實(shí)踐課時(shí)6課時(shí)教學(xué)分析定位與作用本次課為本學(xué)期第1-2次課,是面向?qū)ο蟪绦蛟O(shè)計(jì)的第一個(gè)任務(wù)。本節(jié)主要介紹java語言的發(fā)展和開發(fā)環(huán)境的配置安裝,逐步培養(yǎng)學(xué)生程序設(shè)計(jì)的基本思路,為后續(xù)課程學(xué)習(xí)奠定基礎(chǔ)。學(xué)習(xí)狀態(tài)學(xué)生剛學(xué)習(xí)過計(jì)算機(jī)的一些基礎(chǔ)課程以及網(wǎng)絡(luò)組網(wǎng)、局域網(wǎng)組建的基礎(chǔ)知識(shí),具備基本的計(jì)算機(jī)操作能力,理解能力、自主學(xué)習(xí)能力初步有所提高,有基本的團(tuán)隊(duì)意識(shí),分析、解決問題的能力有待于培養(yǎng)、提高。教學(xué)目標(biāo)技術(shù)理論知識(shí)掌握對(duì)象和類的描述;實(shí)際操作技能掌握J(rèn)ava語言的特點(diǎn)能建立相應(yīng)的環(huán)境;編寫簡(jiǎn)單的HelloWorld程序;配置環(huán)境變量職業(yè)素養(yǎng)逐步培養(yǎng)學(xué)生動(dòng)手操作能力和思考問題的能力;教學(xué)重難點(diǎn)關(guān)鍵點(diǎn)重點(diǎn):了解Java語言的跨平臺(tái)特性,掌握其原理。如何學(xué)習(xí)Java語言難點(diǎn):學(xué)生獨(dú)立建立Java的編譯和運(yùn)行環(huán)境,并編寫兩類Java程序。了解兩類Java程序的區(qū)別。組織形式教學(xué)方法主要采用任務(wù)教學(xué)法教學(xué)。教學(xué)準(zhǔn)備設(shè)備工具多媒體教室材料電子課件教學(xué)環(huán)境東校區(qū)206教學(xué)小結(jié)需要向?qū)W生補(bǔ)充Java程序在編譯和運(yùn)行時(shí)常出現(xiàn)的問題及解決方法。二、教學(xué)設(shè)計(jì)時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)3分鐘5分鐘40分鐘教學(xué)組織:做好上機(jī)課準(zhǔn)備工作,環(huán)視學(xué)生,注意學(xué)生精神狀態(tài),組織教學(xué)。一、復(fù)習(xí)提問,導(dǎo)入任務(wù)從本次課開始,我們接下來研究的是面向?qū)ο蟪绦蛟O(shè)計(jì)的學(xué)習(xí)——Java語言。本次課,我們的任務(wù)就是:掌握Eclipse開發(fā)環(huán)境的安裝和入門級(jí)程序的編寫。二、演示講授,操作任務(wù)1.講授知識(shí)要點(diǎn)(1)網(wǎng)絡(luò)編程所遇到的問題及Java解決的基本思路。(5min)(2)Java語言的特點(diǎn)。(5min)(3)Java編譯和運(yùn)行環(huán)境的建立。(35min)(4)Java程序的分類、編譯和運(yùn)行時(shí)常見問題。(20min)(5)Java平臺(tái)。(10min)(6)總結(jié)(10min)(7)布置作業(yè)及下節(jié)課內(nèi)容(5min)教師提示學(xué)生做好上機(jī)課準(zhǔn)備課程導(dǎo)入:復(fù)習(xí)前一階段學(xué)習(xí)內(nèi)容以C語言為代表使學(xué)生清楚學(xué)習(xí)范疇及新的學(xué)習(xí)任務(wù)講授新課25分鐘10分鐘10分鐘三、實(shí)踐練習(xí),應(yīng)用理解題目:輸出T字四、教學(xué)小結(jié),拓展思考Java語言與其他編程語言的主要區(qū)別和優(yōu)勢(shì)是什么?作業(yè):請(qǐng)完成面向?qū)ο驤ava語言的最新發(fā)展情況?以及他在日常生活的應(yīng)用領(lǐng)域。教師布置任務(wù),引導(dǎo)學(xué)生思考,學(xué)生操作通過操作過程,逐步培養(yǎng)學(xué)生自主學(xué)習(xí)能力和理解能力教師進(jìn)行教學(xué)小結(jié)學(xué)生課下完成作業(yè)

Java語言基礎(chǔ)教案一、教學(xué)概要課題名稱面向?qū)ο蟪绦蛟O(shè)計(jì)理論課時(shí)2課時(shí)教學(xué)對(duì)象13計(jì)算機(jī)應(yīng)用技術(shù)實(shí)踐課時(shí)6課時(shí)教學(xué)分析定位與作用本次課為本學(xué)期第3-4次課,是面向?qū)ο驤ava語言的基礎(chǔ)知識(shí)講解。本節(jié)主要介紹Java的數(shù)據(jù)類型、Java的表達(dá)式、運(yùn)算符。培養(yǎng)學(xué)生邏輯分析的基本思路,為后續(xù)程序設(shè)計(jì)奠定基礎(chǔ)。學(xué)習(xí)狀態(tài)學(xué)生剛學(xué)習(xí)過C語言的基礎(chǔ)課程,具備基本的程序設(shè)計(jì)能力,理解能力、自主學(xué)習(xí)能力,有基本的團(tuán)隊(duì)意識(shí),分析、解決問題的能力有待于培養(yǎng)、提高。教學(xué)目標(biāo)技術(shù)理論知識(shí)1.Java區(qū)分大小寫。2.變量的作用域。3.數(shù)據(jù)類型轉(zhuǎn)化規(guī)則。4.求余運(yùn)算應(yīng)用。5.Java中布爾值同C語言的區(qū)別。6.unicode的含義,編碼與解碼的含義。實(shí)際操作技能掌握多種隱含的數(shù)據(jù)類型轉(zhuǎn)化情況;掌握類、接口、數(shù)組也是數(shù)據(jù)類型;掌握邏輯表達(dá)式中雙與雙或與單與單或的區(qū)別;掌握條件表示式規(guī)則職業(yè)素養(yǎng)逐步培養(yǎng)學(xué)生動(dòng)手操作能力和思考問題的能力;教學(xué)重難點(diǎn)關(guān)鍵點(diǎn)重點(diǎn):數(shù)據(jù)類型轉(zhuǎn)化規(guī)則。難點(diǎn):類和接口。組織形式教學(xué)方法主要采用任務(wù)教學(xué)法教學(xué)。教學(xué)準(zhǔn)備設(shè)備工具多媒體教室安裝Eclipse材料電子課件教學(xué)環(huán)境東206教學(xué)小結(jié)二、教學(xué)設(shè)計(jì)時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)3分鐘5分鐘40分鐘教學(xué)組織:做好上機(jī)課準(zhǔn)備工作,環(huán)視學(xué)生,注意學(xué)生精神狀態(tài),組織教學(xué)。1.查看本機(jī)計(jì)算機(jī)名稱:“系統(tǒng)特性”屬性或ipconfig;2.ipconfig查看Realtek網(wǎng)卡配置信息;3.正確設(shè)置、啟動(dòng)廣播教學(xué)軟件。一、復(fù)習(xí)提問,導(dǎo)入任務(wù)上次課,我們學(xué)習(xí)了Java語言的發(fā)展。從本次課開始,我們接下來研究的是java語言的基礎(chǔ)——數(shù)據(jù)類型、表達(dá)式、運(yùn)算符。本次課,我們的任務(wù)就是:數(shù)據(jù)類型。二、演示講授,操作任務(wù)1.講授知識(shí)要點(diǎn)1)標(biāo)識(shí)符Java語言規(guī)定標(biāo)識(shí)符是以字母、下劃線"_"或美元符號(hào)"$"開始,隨后可跟數(shù)字、字母、下劃線或美元符號(hào)的字符序列。2)關(guān)鍵字Java中的關(guān)鍵字:abstract

boolean

break

bytecasecatch

char

class

continue

default

do

double

else

extends

final

finally

float

for

if

implements

import

instanceof

int

interface

long

native

new

null

package

private

protected

public

return

short

static

super

switch

synchronized

this

throw

throws

transient

try

void

volatile

while3)UnicodeJava語言使用國(guó)際字符集(Unicode)。Unicode字符集定義了一套國(guó)際標(biāo)準(zhǔn)字符集。通常的ASCII碼是8位的,而Unicode字符集中的每個(gè)字符占16位,即2個(gè)字節(jié),整個(gè)字符集共包括65336個(gè)字符,兼容ASCII,排在Unicode字符集最前面的256個(gè)字符就是ASCII碼。Unicode除了可以表示256個(gè)ASCII碼外,還可以表示漢字、拉丁語、希臘字母、朝鮮語等。教師提示學(xué)生做好上機(jī)課準(zhǔn)備課程導(dǎo)入:復(fù)習(xí)前一階段學(xué)習(xí)內(nèi)容使學(xué)生清楚學(xué)習(xí)范疇及新的學(xué)習(xí)任務(wù)講授新課35分鐘10分鐘三、實(shí)踐練習(xí),應(yīng)用理解1、下列屬于合法標(biāo)識(shí)符的是__________。A)&abrB)(stati)C)8ADDFD)$3412、下列屬于合法標(biāo)識(shí)符的是_________。A)*AQabrB)!statiC)A_DEFD)413、下列屬于合法標(biāo)識(shí)符的是_________。A)?DDDDB)statiC)staticD)3414、下列屬于合法標(biāo)識(shí)符的是_________。A)_436abrB)=readC)extendsD)abstract5、下列屬于合法標(biāo)識(shí)符的是_________。A)defaultB)#W23C)@adefD)$_3416、下列是十六進(jìn)制整數(shù)的是_________。A)0176B)0xC5C)6590D)f1787、下列表示轉(zhuǎn)義換行字符的是_________。A)nB)\nC)’n’D)”n”8、下列表示轉(zhuǎn)義回車字符的是________。A)”r”B)\rC)’r’D)r9、下列常量定義合法的是_________。A)intTIMKF=1024B)charTIMKF=”1024”C)finalintTIMKF=1024D)byteTIMKF=’1024’10、下列屬于java.lang.Number類包的是_________.A)java.lang.ByteB)java.lang.ObjectC)java.lang.BooleanD)java.lang.Character11.運(yùn)算符?:屬于__________.A)一元運(yùn)算符B)二元運(yùn)算符C)三元運(yùn)算符D)四元運(yùn)算符12給出下列代碼片段:If(x>0){System.out.println(“Hello.”);}elseif(x>-3){System.out.pirntln(“IamTom.”);}else{System.out.println(“Howareyou?”);}請(qǐng)問將打印字符串“Howareyou?”的x的范圍是__________.A)x>0B)x>-3C)x<=-3D)x<=0&x>-313.下面錯(cuò)誤的賦值語句是____________.A)floatf=11.1f;B)doubled=5.3E12;C)charc=‘r‘;D)bytebb=433;14.給出下列代碼:booleana=false;booleanb=true;booleanc=(a&&b)&&(!b);intresult=c==false?1:2;執(zhí)行完后,c與result的值是______________.A)false和1B)true和2D)true和1D)false和215.

閱讀下列代碼:PublicclassTest{Publicstaticvoidmian(Stringargs[]){Floatf=12.0f;Inti=3;System.out.println((f--)/(++i));}}四、教學(xué)小結(jié),拓展思考本次課我們學(xué)習(xí)了Java語言的基本知識(shí),掌握了標(biāo)識(shí)符、關(guān)鍵字。作業(yè):完成課后練習(xí)第2題,第3題。教師布置任務(wù),引導(dǎo)學(xué)生思考,學(xué)生操作通過操作過程,逐步培養(yǎng)學(xué)生自主學(xué)習(xí)能力和理解能力通過練習(xí),進(jìn)一步理解用戶和組的管理,熟練操作教師進(jìn)行教學(xué)小結(jié)學(xué)生課下完成作業(yè)

Java基礎(chǔ)及規(guī)范教案一、教學(xué)概要課題名稱面向?qū)ο蟪绦蛟O(shè)計(jì)理論教學(xué)時(shí)間2課時(shí)教學(xué)對(duì)象13計(jì)算機(jī)應(yīng)用技術(shù)實(shí)踐教學(xué)實(shí)踐4課時(shí)教學(xué)分析定位與作用本節(jié)主要了解Java數(shù)組及控制語句,明晰同其他語言在這方面的主要區(qū)別點(diǎn),知道一些Java的工程規(guī)范。學(xué)習(xí)狀態(tài)學(xué)生剛學(xué)習(xí)過程序設(shè)計(jì)的一些基礎(chǔ)知識(shí)以及網(wǎng)絡(luò)的基礎(chǔ)知識(shí),具備基本的計(jì)算機(jī)操作能力,理解能力、自主學(xué)習(xí)能力初步有所提高,有基本的團(tuán)隊(duì)意識(shí),分析、解決問題的能力有待于培養(yǎng)、提高。教學(xué)目標(biāo)技術(shù)理論知識(shí)java數(shù)組。一維數(shù)組、二維數(shù)組(35min);控制語句:分支語句、循環(huán)語句、跳轉(zhuǎn)語句(35min);Java工程規(guī)范(10min);實(shí)際操作技能Java數(shù)組定義;分支語句的執(zhí)行規(guī)則;循環(huán)語句的執(zhí)行規(guī)則;跳轉(zhuǎn)語句的類型;職業(yè)素養(yǎng)Java工程規(guī)范存在的必要性;教學(xué)重難點(diǎn)關(guān)鍵點(diǎn)重點(diǎn):Java數(shù)組定義和初始化的多種形式。分支語句的執(zhí)行規(guī)則及常出現(xiàn)的問題。循環(huán)語句的執(zhí)行規(guī)則及常出現(xiàn)的問題。跳轉(zhuǎn)語句的類型。難點(diǎn):數(shù)組維度的理解(一維和二維之間的聯(lián)系和區(qū)別)。一維數(shù)組的多種定義和初始化方式;二維數(shù)組中的列數(shù)不等的情況。對(duì)象數(shù)組:“MyClass[]mc=newMyClass[10];”的理解。分支語句設(shè)計(jì);循環(huán)語句的執(zhí)行過程分析;跳轉(zhuǎn)語句應(yīng)用的案例背景;switch語句執(zhí)行時(shí)常犯錯(cuò)誤。Java工程規(guī)范執(zhí)行的自覺性組織形式教學(xué)方法主要采用講授與引導(dǎo)相結(jié)合的方式教學(xué)。教學(xué)準(zhǔn)備設(shè)備工具多媒體教室安裝Eclipse開發(fā)環(huán)境材料電子課件教學(xué)環(huán)境東206教學(xué)小結(jié)

二、教學(xué)設(shè)計(jì)時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)3分鐘2分鐘40分鐘教學(xué)組織:做好上機(jī)課準(zhǔn)備工作,環(huán)視學(xué)生,注意學(xué)生精神狀態(tài),組織教學(xué)。1.查看本機(jī)計(jì)算機(jī)名稱:“系統(tǒng)特性”屬性或ipconfig;2.ipconfig查看Realtek網(wǎng)卡配置信息;3.正確設(shè)置、啟動(dòng)廣播教學(xué)軟件。一、提出問題,導(dǎo)入新課上次課,我們學(xué)習(xí)了標(biāo)識(shí)符、關(guān)鍵字,清楚了變量的作用。本次課,我們?cè)诖嘶A(chǔ)上,進(jìn)一步學(xué)習(xí)程序設(shè)計(jì)——流程控制。二、講授引導(dǎo),解析問題1.Java數(shù)組一維數(shù)組的聲明方式:typevar[];或type[]var;聲明數(shù)組時(shí)不能指定其長(zhǎng)度(數(shù)組中元素的個(gè)數(shù)),Java中使用關(guān)鍵字new創(chuàng)建數(shù)組對(duì)象,格式為:數(shù)組名=new數(shù)組元素的類型[數(shù)組元素的個(gè)數(shù)]publicclassTestNew{publicstaticvoidmain(Stringargs[]){int[]s;inti;s=newint[5];for(i=0;i<5;i++){s[i]=i;}for(i=4;i>=0;i--){System.out.println(""+s[i]);}}}2.初始化1.動(dòng)態(tài)初始化:數(shù)組定義與為數(shù)組分配空間和賦值的操作分開進(jìn)行;2.靜態(tài)初始化:在定義數(shù)字的同時(shí)就為數(shù)組元素分配空間并賦值;3.默認(rèn)初始化:數(shù)組是引用類型,它的元素相當(dāng)于類的成員變量,因此數(shù)組分配空間后,每個(gè)元素也被按照成員變量的規(guī)則被隱士初始化。實(shí)例:publicclassTestD{publicstaticvoidmain(Stringargs[]){inta[];a=newint[3];a[0]=0;a[1]=1;a[2]=2;Datedays[];days=newDate[3];days[0]=newDate(2008,4,5);days[1]=newDate(2008,2,31);days[2]=newDate(2008,4,4);}}classDate{intyear,month,day;Date(intyear,intmonth,intday){this.year=year;this.month=month;this.day=day;}}3.流程控制選擇:選擇控制有兩種:if/else語句和switch語句。1、if/else語句。if語句共有三種表現(xiàn)形式:?jiǎn)畏种ЫY(jié)構(gòu)、雙分支結(jié)構(gòu)、多分支結(jié)構(gòu)。1)、單分支結(jié)構(gòu)。這是最簡(jiǎn)單的一種選擇結(jié)構(gòu),它只是簡(jiǎn)單的判斷某個(gè)條件是否成立,如果成立就執(zhí)行一段代碼,語句形式為:if(表達(dá)式){......}2)、雙分支結(jié)構(gòu)。這是一個(gè)標(biāo)準(zhǔn)的,完整的if語句實(shí)現(xiàn)形式,它首先判斷某個(gè)條件是否成立,如果成立就執(zhí)行一段代碼,如果條件不成立則執(zhí)行另一段代碼,語句形式為:if(表達(dá)式){......}else{......}3)、多分支結(jié)構(gòu)。這是if語句嵌套形式的一種,它是多個(gè)if語句的嵌套,語句形式如下:if(表達(dá)式){......}elseif(表達(dá)式){......}else{......}2、switch語句。switch語句專用于實(shí)現(xiàn)多分支結(jié)構(gòu)程序,其特點(diǎn)是各分支清晰而直觀。switch語句后面的括號(hào)中可以是任何表達(dá)式,取其整數(shù)部分與各常量表達(dá)式比較。其中常量表達(dá)式必須是能夠自動(dòng)轉(zhuǎn)換為整型的,如字符型、短整型、枚舉等。語句形式如下:switch(表達(dá)式){case常量表達(dá)式1:語句1case常量表達(dá)式2:語句2......case常量表達(dá)式n:語句ndefault:語句n+1}循環(huán):根據(jù)不同的表現(xiàn)形式,循環(huán)共可以分為三種。1、while循環(huán)。語法形式為:while(表達(dá)式){......循環(huán)體語句......}2、for循環(huán)。語法形式為:for(表達(dá)式1;表達(dá)式2;表達(dá)式3){......循環(huán)體語句......}3、do_while,其語法形式為:do{......循環(huán)體語句......}教師提示學(xué)生做好上機(jī)課準(zhǔn)備以小組為單位做好上課前計(jì)算機(jī)的協(xié)同調(diào)試工作課程導(dǎo)入:使學(xué)生了解學(xué)習(xí)內(nèi)容講授新課時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)25分鐘40分鐘[實(shí)訓(xùn)1]數(shù)字斜塔利用數(shù)組打印出數(shù)字斜塔1234567890[操作總結(jié)]總結(jié)操作情況,進(jìn)一步明確數(shù)組的綜合應(yīng)用。[實(shí)訓(xùn)2]百雞百錢我國(guó)古代數(shù)學(xué)家張丘建在《張丘建算經(jīng)》一書中提出了“百雞問題”:雞翁一,值錢五,雞母一,值錢三,雞雛三,值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?publicclassChickenBuy{/***百錢買百雞問題*@paramargs*/staticintx;//可買雞翁只數(shù)staticinty;//可買雞母只數(shù)staticintz;//可買雞雛只數(shù)//方法一:循環(huán)列舉法publicvoidmethod1(){x=0;while(x<=19){y=0;while(y<=33){z=100-x-y;if(x*5+y*3+z/3==100&&z%3==0&&x!=0){System.out.println("可買雞翁只數(shù):"+x);System.out.println("可買雞母只數(shù):"+y);System.out.println("可買雞雛只數(shù):"+z);System.out.println("-------------------");}y++;}x++;}}//方法二:循環(huán)法二publicstaticvoidmethod2(){for(intx=1;x<=100/5;x++){for(inty=0;y<=33;y++){z=100-x-y;if(x*5+y*3+z/3==100&&z%3==0){System.out.println("可買雞翁只數(shù):"+x);System.out.println("可買雞母只數(shù):"+y);System.out.println("可買雞雛只數(shù):"+z);System.out.println("-------------------");}}}}時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)10分鐘四、教學(xué)小結(jié),拓展思考本次課我們學(xué)習(xí)了流程控制的基本知識(shí),掌握了if和for語法。我們要清楚數(shù)組功能及數(shù)組和循環(huán)的結(jié)合使用。作業(yè):填寫好實(shí)訓(xùn)報(bào)告,完成實(shí)訓(xùn)報(bào)告中相應(yīng)思考題,如實(shí)記錄實(shí)訓(xùn)過程中出現(xiàn)的情況。

面向?qū)ο螅ㄒ唬╊惻c對(duì)象教案一、教學(xué)概要課題名稱面向?qū)ο蟪绦蛟O(shè)計(jì)理論課時(shí)2課時(shí)教學(xué)對(duì)象13計(jì)算機(jī)應(yīng)用技術(shù)實(shí)踐課時(shí)6課時(shí)教學(xué)分析定位與作用本節(jié)主要讓學(xué)生掌握抽象的含義,類與對(duì)象之間的關(guān)系,類定義的基本要點(diǎn),對(duì)象特點(diǎn)。學(xué)習(xí)狀態(tài)學(xué)生剛學(xué)習(xí)過程序設(shè)計(jì)的一些基礎(chǔ)知識(shí)以及流程控制知識(shí),具備基本的計(jì)算機(jī)操作能力,理解能力、自主學(xué)習(xí)能力初步有所提高,有基本的團(tuán)隊(duì)意識(shí),分析、解決問題的能力有待于培養(yǎng)、提高。教學(xué)目標(biāo)技術(shù)理論知識(shí)抽象的含義(10min);類與對(duì)象的關(guān)系(10min);類的域和方法(10min);對(duì)象產(chǎn)生、作為參數(shù)傳遞的特點(diǎn)、對(duì)象數(shù)組、數(shù)組對(duì)象(40min);構(gòu)造方法(10min);實(shí)際操作技能掌握類定義;掌握對(duì)象定義;掌握構(gòu)造方法;職業(yè)素養(yǎng)逐步培養(yǎng)學(xué)生動(dòng)手操作能力和思考問題的能力;教學(xué)重難點(diǎn)關(guān)鍵點(diǎn)重點(diǎn):計(jì)算機(jī)中抽象與生活當(dāng)中抽象的不同含義。域變量和局部變量作用域的差異以及初始化方面的不同。類與對(duì)象之間的關(guān)系;對(duì)象生成時(shí),類中非static的屬性和方法拷貝到對(duì)象當(dāng)中(構(gòu)造方法例外)。對(duì)象生成后在內(nèi)存中的分布,對(duì)象引用在內(nèi)存中的分布。對(duì)象作為參數(shù)傳遞時(shí)的特點(diǎn)。構(gòu)造方法的含義和作用,finalize方法及垃圾對(duì)象釋放。難點(diǎn):構(gòu)造方法定義時(shí)常見錯(cuò)誤。對(duì)象如何成為垃圾對(duì)象,垃圾對(duì)象如何釋放。組織形式教學(xué)方法主要采用任務(wù)教學(xué)法教學(xué)。教學(xué)準(zhǔn)備設(shè)備工具多媒體教室材料電子課件教學(xué)環(huán)境東206教學(xué)小結(jié)二、教學(xué)設(shè)計(jì)時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)3分鐘5分鐘30分鐘教學(xué)組織:做好上機(jī)課準(zhǔn)備工作,環(huán)視學(xué)生,注意學(xué)生精神狀態(tài),組織教學(xué)。1.正確設(shè)置、啟動(dòng)廣播教學(xué)軟件。2.啟動(dòng)Eclipse,并設(shè)置工作目錄一、復(fù)習(xí)提問,導(dǎo)入任務(wù)上次課,我們學(xué)習(xí)了數(shù)組和流程控制。從本次課開始,我們接下來研究的是一類和對(duì)象的學(xué)習(xí)。本次課,我們的任務(wù)就是:類、對(duì)象。二、演示講授,操作任務(wù)1.講授知識(shí)要點(diǎn)1)類、對(duì)象所謂對(duì)象就是真實(shí)世界中的實(shí)體,對(duì)象與實(shí)體是一一對(duì)應(yīng)的,也就是說現(xiàn)實(shí)世界中每一個(gè)實(shí)體都是一個(gè)對(duì)象,它是一種具體的概念。類是具備某些共同特征的實(shí)體的集合,它是一種抽象的概念,用程序設(shè)計(jì)的語言來說,類是一種抽象的數(shù)據(jù)類型,它是對(duì)所具有相同特征實(shí)體的抽象。2)兩者關(guān)系類與對(duì)象的關(guān)系:類是對(duì)象的集合,對(duì)象是類的實(shí)例;對(duì)象是通過newclassName產(chǎn)生的,用來調(diào)用類的方法;類的構(gòu)造方法。用一個(gè)例子說明一下他們的關(guān)系:比如“人類”就是一個(gè)類,那么具體的某個(gè)人“張三”就是“人類”這個(gè)類的對(duì)象,而“名字、年齡”等信息就是對(duì)象的屬性,人的動(dòng)作比如“吃飯、穿衣”等就是對(duì)象的方法??傊惥褪怯邢嗤卣鞯氖挛锏募希鴮?duì)象就是類的一個(gè)具體實(shí)例。同時(shí)類有多態(tài)和繼承,例如“人類”可以分為“男人、女人”,“老人、小孩”那么“男人、女人”就是“人類”的子類等等。一樓的說“轎車”是一個(gè)實(shí)例化,我覺得有點(diǎn)不妥,“轎車”應(yīng)該是“車”的一個(gè)子類,例如“車牌號(hào)是***的轎車”才是一個(gè)對(duì)象。方法是被對(duì)象調(diào)用的比如“張三.穿衣()”,用static修飾的方法是靜態(tài)的方法或稱為共享方法,一般用類名直接調(diào)用。教師提示學(xué)生做好上機(jī)課準(zhǔn)備以小組為單位做好上課前計(jì)算機(jī)的協(xié)同調(diào)試工作課程導(dǎo)入:復(fù)習(xí)前一階段學(xué)習(xí)內(nèi)容使學(xué)生清楚學(xué)習(xí)范疇及新的學(xué)習(xí)任務(wù)講授新課60分鐘10分鐘10分鐘任務(wù):Java實(shí)現(xiàn)菲波那契數(shù)列操作任務(wù)流程:斐波納契數(shù)列,又稱黃金分割數(shù)列,指的是這樣一個(gè)數(shù)列:1、1、2、3、5、8、13、21、……在數(shù)學(xué)上,斐波納契數(shù)列以如下被以遞歸的方法定義:F0=0,F(xiàn)1=1,F(xiàn)n=F(n-1)+F(n-2)(n>=2,n∈N*)publicclassFibonacci{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);System.out.println("Pleaseinputthisfibonaccin:");intn=scanner.nextInt();//假設(shè)輸入為大于零的整數(shù)System.out.println(fibonacci(6)+":"+fibonacciNormal(6));intsum=0;for(inti=1;i<=n;i++){sum+=fibonacci(i);}System.out.println(sum);}//遞歸實(shí)現(xiàn)方式publicstaticintfibonacci(intn){if(n<=2){return1;}else{returnfibonacci(n-1)+fibonacci(n-2);}}//遞推實(shí)現(xiàn)方式publicstaticintfibonacciNormal(intn){if(n<=2){return1;}intn1=1,n2=1,sn=0;for(inti=0;i<n-2;i++){sn=n1+n2;n1=n2;n2=sn;}returnsn;}}思考通過圖樣,理解人對(duì)馬、青蛙、獅子這些具體對(duì)象的抽象理解——?jiǎng)游?。在?duì)象作為參數(shù)傳遞案例中,程序配合圖樣進(jìn)行啟發(fā),幫助學(xué)生建立對(duì)象分析方法。三、實(shí)踐練習(xí),應(yīng)用理解讓學(xué)生明確類或?qū)ο蟮姆椒ㄒ簿哂羞f歸調(diào)用的性質(zhì);普通數(shù)據(jù)值傳遞案例;對(duì)象引用傳遞案例。通過對(duì)比的方法讓學(xué)生理解引用傳遞和普通數(shù)據(jù)值傳遞之間的區(qū)別;。四、教學(xué)小結(jié),拓展思考本次課我們學(xué)習(xí)了類和對(duì)象知識(shí),掌握了java中類和對(duì)象的定義。在對(duì)象作為參數(shù)傳遞案例中,程序配合圖樣進(jìn)行啟發(fā),幫助學(xué)生建立對(duì)象分析方法。作業(yè):填寫好實(shí)訓(xùn)報(bào)告,完成實(shí)訓(xùn)報(bào)告中相應(yīng)思考題,如實(shí)記錄實(shí)訓(xùn)過程中出現(xiàn)的情況。教師布置任務(wù),引導(dǎo)學(xué)生思考,學(xué)生操作學(xué)生按照實(shí)習(xí)指導(dǎo)書分任務(wù)進(jìn)行操作通過操作過程,逐步培養(yǎng)學(xué)生自主學(xué)習(xí)能力和理解能力通過練習(xí),進(jìn)一步理解用戶和組的管理,熟練操作教師進(jìn)行教學(xué)小結(jié)指導(dǎo)學(xué)生明確實(shí)訓(xùn)報(bào)告的填寫要求學(xué)生課下完成作業(yè)

面向?qū)ο笊稀窃L問修飾符和包教案一、教學(xué)概要課題名稱面向?qū)ο蟪绦蛟O(shè)計(jì)理論教學(xué)時(shí)間2課時(shí)教學(xué)對(duì)象13級(jí)計(jì)算機(jī)應(yīng)用技術(shù)實(shí)踐教學(xué)時(shí)間4課時(shí)教學(xué)分析定位與作用本次課主要學(xué)習(xí)static、final、native和package、import等非訪問修飾符。學(xué)習(xí)狀態(tài)學(xué)生剛學(xué)習(xí)過程序設(shè)計(jì)的一些基礎(chǔ)知識(shí)以及流程控制知識(shí),具備基本的計(jì)算機(jī)操作能力,理解能力、自主學(xué)習(xí)能力初步有所提高,有基本的團(tuán)隊(duì)意識(shí),分析、解決問題的能力有待于培養(yǎng)、提高。教學(xué)目標(biāo)技術(shù)理論知識(shí)靜態(tài)成員;常量成員;實(shí)際操作技能掌握使用static定義成員;掌握final定義成員和類;職業(yè)素養(yǎng)逐步培養(yǎng)學(xué)生動(dòng)手能力和團(tuán)隊(duì)協(xié)作能力;教學(xué)重難點(diǎn)關(guān)鍵點(diǎn)重點(diǎn):static的用法、final的用法、native存在的意義。包在Java程序中的作用;建包與使用包;打包的方法。難點(diǎn):static屬性和方法不拷貝到對(duì)象當(dāng)中,static方法不能訪問對(duì)象方法,static屬性或方法能被所有對(duì)象方法所訪問。引入包概念后,對(duì)于程序設(shè)計(jì)和執(zhí)行的影響,引出import和classpath、訪問控制符的應(yīng)用。組織形式教學(xué)方法主要采用講授與引導(dǎo)相結(jié)合的方式教學(xué)。教學(xué)準(zhǔn)備設(shè)備工具多媒體教室材料電子課件教學(xué)環(huán)境東206教學(xué)小結(jié)

二、教學(xué)設(shè)計(jì)時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)教學(xué)組織:做好上機(jī)課準(zhǔn)備工作,環(huán)視學(xué)生,注意學(xué)生精神狀態(tài),組織教學(xué)。1.查看本機(jī)計(jì)算機(jī)名稱:“系統(tǒng)特性”屬性或ipconfig;2.ipconfig查看Realtek網(wǎng)卡配置信息;3.正確設(shè)置、啟動(dòng)廣播教學(xué)軟件。4.啟動(dòng)Eclipse,設(shè)置工作目錄一、提出問題,導(dǎo)入新課上次課,我們學(xué)習(xí)了面向?qū)ο箢惡蛯?duì)象的定義,清楚了利用現(xiàn)實(shí)生活中的觀念來理解程序設(shè)計(jì)的重要作用,又學(xué)習(xí)了構(gòu)造方法進(jìn)行的初始化操作。本次課,我們?cè)诖嘶A(chǔ)上,進(jìn)一步學(xué)習(xí)類非訪問修飾符二、講授引導(dǎo),解析問題1.staticstatic表示“全局”或者“靜態(tài)”的意思,用來修飾成員變量和成員方法,也可以形成靜態(tài)static代碼塊,但是Java語言中沒有全局變量的概念。2.final數(shù)據(jù)許多編程語言都有某種方法,來向編譯器告知一塊數(shù)據(jù)是恒定不變的。有時(shí)數(shù)據(jù)的恒定不變是很有用的3.final參數(shù)

java中也許將參數(shù)列表中的參數(shù)以聲明的方式聲指明為final。這意味著你無發(fā)改變參數(shù)所指向的對(duì)象4.final方法使用final方法有兩個(gè)原因。第一個(gè)原因是把方法鎖定,以防止任何繼承它的類修改它的含義。這是出于設(shè)計(jì)的考慮:想要確保在繼承中使用的方法保持不變,并且不會(huì)被覆蓋。5.final類當(dāng)將類定義為final時(shí),就表明了你不打算繼承該類,而且也不也許別人這樣做。換句話說,出于某種考慮,你對(duì)該類的設(shè)計(jì)永不需要做任何變動(dòng),或者出于安全的考慮,你不希望他有子類。三、實(shí)踐操作,完成任務(wù)[實(shí)訓(xùn)1]static變量classUseStatic{staticinta=3;staticintb;staticvoidmeth(intx){System.out.println("x="+x);System.out.println("a="+a);System.out.println("b="+b);}static{System.out.println("Staticblockinitialized.");b=a*4;}publicstaticvoidmain(Stringargs[]){meth(42);}}教師提示學(xué)生做好上機(jī)課準(zhǔn)備以小組為單位做好上課前計(jì)算機(jī)的協(xié)同調(diào)試工作課程導(dǎo)入:使學(xué)生了解學(xué)習(xí)內(nèi)容時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)[實(shí)訓(xùn)2]final使用packagereusing;importjava.util.*;importstaticnet.mindview.util.Print.*;classValue{inti;//PackageaccesspublicValue(inti){this.i=i;}}publicclassFinalData{privatestaticRandomrand=newRandom(47);privateStringid;publicFinalData(Stringid){this.id=id;}//Canbecompile-timeconstants:privatefinalintvalueOne=9;privatestaticfinalintVALUE_TWO=99;publicstaticfinalintVALUE_THREE=39;privatefinalinti4=rand.nextInt(20);staticfinalintINT_5=rand.nextInt(20);privateValuev1=newValue(11);privatefinalValuev2=newValue(22);privatestaticfinalValueVAL_3=newValue(33);//Arrays:privatefinalint[]a={1,2,3,4,5,6};publicStringtoString(){returnid+":"+"i4="+i4+",INT_5="+INT_5;}publicstaticvoidmain(String[]args){FinalDatafd1=newFinalData("fd1");//!fd1.valueOne++;//Error:can'tchangevaluefd1.v2.i++;//Objectisn'tconstant!fd1.v1=newValue(9);//OK--notfinalfor(inti=0;i<fd1.a.length;i++)fd1.a[i]++;//Objectisn'tconstant!//!fd1.v2=newValue(0);//Error:Can't//!fd1.VAL_3=newValue(1);//changereference//!fd1.a=newint[3];print(fd1);print("CreatingnewFinalData");FinalDatafd2=newFinalData("fd2");print(fd1);print(fd2);}}/*Output:fd1:i4=15,INT_5=18CreatingnewFinalDatafd1:i4=15,INT_5=18fd2:i4=13,INT_5=18*/時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)四、教學(xué)小結(jié),拓展思考本次課我們學(xué)習(xí)了非訪問修飾符,掌握了java中static和final的使用。作業(yè):填寫好實(shí)訓(xùn)報(bào)告,完成實(shí)訓(xùn)報(bào)告中相應(yīng)思考題,如實(shí)記錄實(shí)訓(xùn)過程中出現(xiàn)的情況。

面向?qū)ο笾小獙?duì)象的封裝教案一、教學(xué)概要課題名稱面向?qū)ο蟪绦蛟O(shè)計(jì)理論教學(xué)時(shí)間2課時(shí)教學(xué)對(duì)象13級(jí)計(jì)算機(jī)應(yīng)用技術(shù)實(shí)踐教學(xué)時(shí)間4課時(shí)教學(xué)分析定位與作用本次課主要學(xué)習(xí)封裝的含義、封裝的實(shí)現(xiàn)方法——Java訪問控制符的類型與應(yīng)用范圍;由封裝引出的對(duì)象相互作用形式——消息的含義;由消息而引出的對(duì)象組合概念;封裝與組合對(duì)于面向?qū)ο蟪绦蛟O(shè)計(jì)的影響。學(xué)習(xí)狀態(tài)學(xué)生剛學(xué)習(xí)過程序設(shè)計(jì)的一些基礎(chǔ)知識(shí)以及流程控制知識(shí),具備基本的程序設(shè)計(jì)能力,理解能力、自主學(xué)習(xí)能力初步有所提高,有基本的團(tuán)隊(duì)意識(shí),分析、解決問題的能力有待于培養(yǎng)、提高。教學(xué)目標(biāo)技術(shù)理論知識(shí)封裝的含義;訪問控制符的種類與影響范圍(15min)。訪問控制符應(yīng)用(35min)。面向?qū)ο蟪绦蛟O(shè)計(jì)中對(duì)象相互作用的描述——消息(25min)。封裝與組合對(duì)于面向?qū)ο蟪绦蛟O(shè)計(jì)的影響(5min)。實(shí)際操作技能定義動(dòng)物類;定義兵器類;定義寵物類職業(yè)素養(yǎng)逐步培養(yǎng)學(xué)生動(dòng)手能力和團(tuán)隊(duì)協(xié)作能力;教學(xué)重難點(diǎn)關(guān)鍵點(diǎn)重點(diǎn):封裝、訪問控制符、消息;難點(diǎn):protected的影響范圍。對(duì)象引用在內(nèi)存中的存在形式。消息的實(shí)現(xiàn):?jiǎn)蜗蛞煤碗p向引用的實(shí)現(xiàn)。封裝、消息、組合的聯(lián)系和區(qū)別。組織形式教學(xué)方法主要采用任務(wù)教學(xué)法,穿插適當(dāng)?shù)闹v授與演示。教學(xué)準(zhǔn)備設(shè)備工具多媒體教室材料電子課件教學(xué)環(huán)境東206教學(xué)小結(jié)

二、教學(xué)設(shè)計(jì)時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)5分鐘2分鐘3分鐘40分鐘教學(xué)組織:做好上機(jī)課準(zhǔn)備工作,環(huán)視學(xué)生,注意學(xué)生精神狀態(tài),組織教學(xué)。1.查看本機(jī)計(jì)算機(jī)名稱:“系統(tǒng)特性”屬性或ipconfig;2.ipconfig查看Realtek網(wǎng)卡配置信息;3.正確設(shè)置、啟動(dòng)廣播教學(xué)軟件。4.啟動(dòng)Eclipse并設(shè)置工作空間一、復(fù)習(xí)提問,導(dǎo)入任務(wù)(一)導(dǎo)入任務(wù):對(duì)象的封裝需要考慮什么?如何識(shí)別對(duì)象中的屬性和行為?本次課,我們的任務(wù)就是:對(duì)象封裝。(二)復(fù)習(xí)提問:在我們開始本次任務(wù)之前,我們先回顧一下非訪問修飾符。二、分析思考與探索實(shí)踐:所謂封裝,就是通過定義類并且給類的屬性和方法加上訪問控制來抽象事物的本質(zhì)特性。封裝就是定義一個(gè)類,然后給該類的屬性(成員變量)和方法加上訪問控制修飾詞(public,private,protected,默認(rèn)包訪問權(quán)限),使得該類的屬性和方法對(duì)于類外部來說,想可見的可見,不想可見的隱藏。所以,通過封裝這個(gè)手段,就抽象出來了事物的本質(zhì)特性。對(duì)上面內(nèi)容進(jìn)行進(jìn)一步的解釋:什么叫抽象?比如拿人類來舉例子,封裝是一種手段,通過封裝定義出來的這個(gè)類,和現(xiàn)實(shí)當(dāng)中的人這個(gè)實(shí)體(對(duì)象),他們之間就是一種抽象,我們現(xiàn)實(shí)當(dāng)中只存在一個(gè)一個(gè)的人(對(duì)象),人類只是一個(gè)概念性的東西,是我們?nèi)俗约簹w納總結(jié)出來的,我們知道人都長(zhǎng)什么樣,所以我們知道符合這個(gè)樣子的就叫人,人的大腦總是習(xí)慣將事物分類,因此人類的概念就出現(xiàn)了,那么我們發(fā)現(xiàn)一個(gè)一個(gè)的人,都有眼睛鼻子嘴(屬性),都能吃飯(方法),等等,這就是人這個(gè)事物的本質(zhì)特性,然后我們得編程啊,人類的概念光在腦海中出現(xiàn)了還不行,還得體現(xiàn)到代碼上,那么你想體現(xiàn)到代碼上,也就是定義一個(gè)類,就要使用封裝這個(gè)手段。為什么要加上訪問控制?一是,有些東西是很關(guān)鍵很機(jī)密的,不想隨便被使用,被改變,被訪問。二是,可能這個(gè)東西不是很關(guān)鍵機(jī)密,訪問和改變也無所謂,但是,因?yàn)橛行傩院头椒?,它們?duì)于外部來說,是無關(guān)的沒用的,但是對(duì)于我自己這個(gè)類來說,是必要的,因?yàn)榭赡茉谖易约哼@個(gè)類中要使用它們,這個(gè)時(shí)候,進(jìn)行隱藏,不讓外部看,好處就是,如果將這些不必要的內(nèi)容也暴露給外部的話,那么在使用的時(shí)候,使用者會(huì)被迷惑,因?yàn)檫@個(gè)東西對(duì)他沒用,但是又可以調(diào)用,訪問,而且他又不知道又沒有用,但是如果進(jìn)行隱藏,不給外部查看,那么就很清晰了,因?yàn)檫@樣一來,只要是對(duì)外暴露的屬性方法,都是有用的,你想一下,JDK的類庫里面的那些類,比如String類,對(duì)外暴露的屬性和方法,哪個(gè)是無用的?這也是一種良好的編程習(xí)慣和規(guī)范。封裝是人們對(duì)現(xiàn)實(shí)世界中解決問題時(shí),為了進(jìn)行簡(jiǎn)化問題,對(duì)研究的對(duì)象所采用的一種方法,一種信息屏蔽技術(shù)。教師提示學(xué)生做好上機(jī)課準(zhǔn)備以小組為單位做好上課前計(jì)算機(jī)的協(xié)同調(diào)試工作課程導(dǎo)入:使學(xué)生了解學(xué)習(xí)內(nèi)容學(xué)生回顧相關(guān)知識(shí)點(diǎn),回答問題教師引導(dǎo)學(xué)生思考學(xué)生學(xué)習(xí)、操作實(shí)現(xiàn)任務(wù)小組內(nèi)學(xué)習(xí)交流教師帶領(lǐng)學(xué)生總結(jié)完成任務(wù)的辦法引導(dǎo)著讓做得好的學(xué)生說出自己操作的過程時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)40分鐘20分鐘10分鐘三、教師指導(dǎo),突破關(guān)鍵單件模式用途:?jiǎn)渭J綄儆诠S模式的特例,只是它不需要輸入?yún)?shù)并且始終返回同一對(duì)象的引用。單件模式能夠保證某一類型對(duì)象在系統(tǒng)中的唯一性,即某類在系統(tǒng)中只有一個(gè)實(shí)例。它的用途十分廣泛,打個(gè)比方,我們開發(fā)了一個(gè)簡(jiǎn)單的留言板,用戶的每一次留言都要將留言信息寫入到數(shù)據(jù)庫中,最直觀的方法是沒次寫入都建立一個(gè)數(shù)據(jù)庫的鏈接。這是個(gè)簡(jiǎn)單的方法,在不考慮并發(fā)的時(shí)候這也是個(gè)不錯(cuò)的選擇。但實(shí)際上,一個(gè)網(wǎng)站是并發(fā)的,并且有可能是存在大量并發(fā)操作的。如果我們對(duì)每次寫入都創(chuàng)建一個(gè)數(shù)據(jù)庫連接,那么很容易的系統(tǒng)會(huì)出現(xiàn)瓶頸,系統(tǒng)的精力將會(huì)很多的放在維護(hù)鏈接上而非直接查詢操作上。這顯然是不可取的。如果我們能夠保證系統(tǒng)中自始至終只有唯一一個(gè)數(shù)據(jù)庫連接對(duì)象,顯然我們會(huì)節(jié)省很多內(nèi)存開銷和cpu利用率。這就是單件模式的用途。當(dāng)然單件模式不僅僅只用于這樣的情況。在《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》一書中對(duì)單件模式的適用性有如下描述:1、當(dāng)類只能有一個(gè)實(shí)例而且客戶可以從一個(gè)眾所周知的訪問點(diǎn)訪問它時(shí)。2、當(dāng)這個(gè)唯一實(shí)例應(yīng)該是通過子類化可擴(kuò)展的,并且客戶應(yīng)該無需更改代碼就能使用一個(gè)擴(kuò)展的實(shí)例時(shí)。關(guān)于Instance類應(yīng)該如何設(shè)計(jì):如上面敘述,我們保證單件模式類是我們?nèi)〉脝渭?shí)例的唯一訪問點(diǎn)。那么我們應(yīng)該保證在程序中盡量避免允許創(chuàng)建Instance實(shí)例。通過將構(gòu)造函數(shù)聲明為private可以防止程序員通過new關(guān)鍵字調(diào)用構(gòu)造上函數(shù)創(chuàng)建對(duì)象。并且在Instance類中創(chuàng)建getXXX()方法調(diào)用構(gòu)造函數(shù)并返回具體Instance實(shí)例。具體代碼如下:[java]classInstance{privateInstance(){}publicstaticInstancegetSelf(){returnnewInstance();}}//懶漢式classLSingle{privatestaticInstance_instance=null;privateLSingle(){}publicstaticInstancegetInstance(){if(_instance==null){synchronized(LSingle.class){_instance=Instance.getSelf();}}return_instance;}}//餓漢式classESingle{privatestaticInstance_instance=Instance.getSelf();privateESingle(){}publicstaticInstancegetInstance(){return_instance;}}下面對(duì)單件模式的懶漢式與餓漢式進(jìn)行簡(jiǎn)單介紹:1、餓漢式:在程序啟動(dòng)或單件模式類被加載的時(shí)候,單件模式實(shí)例就已經(jīng)被創(chuàng)建。2、懶漢式:當(dāng)程序第一次訪問單件模式實(shí)例時(shí)才進(jìn)行創(chuàng)建。如何選擇:如果單件模式實(shí)例在系統(tǒng)中經(jīng)常會(huì)被用到,餓漢式是一個(gè)不錯(cuò)的選擇。反之如果單件模式在系統(tǒng)中會(huì)很少用到或者幾乎不會(huì)用到,那么懶漢式是一個(gè)不錯(cuò)的選擇。四、分析歸納,實(shí)際操作1、對(duì)象封裝的要素;2、按實(shí)際情況進(jìn)行對(duì)象的封裝。五、總結(jié)反饋1、教師評(píng)價(jià)反饋學(xué)生操作情況;2、通過互動(dòng)進(jìn)行總結(jié)針對(duì)學(xué)生操作過程中出現(xiàn)的問題,總結(jié)說明操作要點(diǎn)讓做得突出的學(xué)生總結(jié)歸納提出新問題,進(jìn)一步學(xué)習(xí)web站點(diǎn)的搭建根據(jù)學(xué)生操作情況,教師進(jìn)行總結(jié),并演示講授新的操作要點(diǎn)——虛擬目錄的使用學(xué)生操作總結(jié)學(xué)生操作情況提出思考問題,進(jìn)一步熟練Web站點(diǎn)的搭建時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)15分鐘20分鐘六、思考與練習(xí)思考:如何實(shí)現(xiàn)雙向發(fā)送消息的實(shí)現(xiàn)思考?對(duì)象通常表示真實(shí)世界系統(tǒng)中的事情,而系統(tǒng)需要協(xié)作以完成共同的任務(wù)。協(xié)作的事務(wù)和人互相發(fā)送消息。例如,這些消息包括,我們對(duì)家人和朋友所說的事情、登錄網(wǎng)站閱讀的電子郵件、公共汽車上的廣告貼畫、電視中的娛樂節(jié)目和動(dòng)畫片、交通指示燈信號(hào)、筆記本電腦的電源指示燈,甚至是我們穿的衣服、說話的語氣和姿態(tài)——這些都是某種類型的消息。使得這些消息有用的是它們遵守的協(xié)議,而這些協(xié)議是我們對(duì)消息意義的解釋。一個(gè)明顯的例子就是國(guó)際上就“紅燈停,綠燈行”達(dá)成的一致。軟件對(duì)象也需要一致的協(xié)議,以便能互相通信。思考:高內(nèi)聚、松耦合??jī)?nèi)聚是從功能角度來度量模塊內(nèi)的聯(lián)系,一個(gè)好的內(nèi)聚模塊應(yīng)當(dāng)恰好做一件事。它描述的是模塊內(nèi)的功能聯(lián)系;耦合是軟件結(jié)構(gòu)中各模塊之間相互連接的一種度量,耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度、進(jìn)入或訪問一個(gè)模塊的點(diǎn)以及通過接口的數(shù)據(jù)。高內(nèi)聚低耦合,是軟件工程中的概念,是判斷設(shè)計(jì)好壞的標(biāo)準(zhǔn),主要是面向?qū)ο蟮脑O(shè)計(jì),主要是看類的內(nèi)聚性是否高,耦合度是否低。小組間實(shí)現(xiàn)交流互訪在教師的引導(dǎo)下,實(shí)現(xiàn)多個(gè)類設(shè)計(jì)完成內(nèi)聚和耦合時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)七、練習(xí)總結(jié)、布置作業(yè)針對(duì)練習(xí)情況,輔導(dǎo)、總結(jié),布置課后作業(yè)。布置課后作業(yè)面向?qū)ο笾小^承與多態(tài)教案一、教學(xué)概要課題名稱面向?qū)ο蟪绦蛟O(shè)計(jì)理論教學(xué)時(shí)間2課時(shí)教學(xué)對(duì)象13級(jí)計(jì)算機(jī)應(yīng)用技術(shù)實(shí)踐教學(xué)時(shí)間4課時(shí)教學(xué)分析定位與作用本次課主要學(xué)習(xí)繼承和多態(tài)的含義以及實(shí)現(xiàn)方法,繼承與多態(tài)在面向?qū)ο蟪绦蛟O(shè)計(jì)中的理解和運(yùn)用。學(xué)習(xí)狀態(tài)學(xué)生剛學(xué)習(xí)過程序設(shè)計(jì)的一些基礎(chǔ)知識(shí)以及流程控制知識(shí),具備基本的程序設(shè)計(jì)能力,理解能力、自主學(xué)習(xí)能力初步有所提高,有基本的團(tuán)隊(duì)意識(shí),分析、解決問題的能力有待于培養(yǎng)、提高。教學(xué)目標(biāo)技術(shù)理論知識(shí)理解繼承和多態(tài)實(shí)際操作技能利用java完成繼承和多態(tài)的程序設(shè)計(jì)職業(yè)素養(yǎng)培養(yǎng)學(xué)生自主學(xué)習(xí)能力以及認(rèn)真學(xué)習(xí)的態(tài)度教學(xué)重難點(diǎn)關(guān)鍵點(diǎn)重點(diǎn):1.類繼承在子類中的定義(不拷貝父類的屬性與方法)和子類對(duì)象(拷貝父類的屬性和方法)兩個(gè)層次之間的區(qū)別。2.Object定義的equal與hashcode方法的含義與一些類覆蓋后的轉(zhuǎn)義。難點(diǎn):繼承在面向?qū)ο蟪绦蛟O(shè)計(jì)中地位的理解。多態(tài)方法之間的關(guān)系——委托調(diào)用而不是方法實(shí)現(xiàn)的簡(jiǎn)單拷貝。多態(tài)常見錯(cuò)誤。組織形式教學(xué)方法以班級(jí)與小組相結(jié)合的形式組織教學(xué),主要采用案例教學(xué)法中任務(wù)教學(xué)法。教學(xué)準(zhǔn)備設(shè)備工具多媒體教室材料電子課件、學(xué)生實(shí)訓(xùn)報(bào)告教學(xué)環(huán)境東206教學(xué)小結(jié)

二、教學(xué)設(shè)計(jì)時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)3分鐘1分鐘6分鐘教學(xué)組織:做好機(jī)房上課準(zhǔn)備工作,組織好學(xué)生就位、開機(jī),下發(fā)學(xué)習(xí)材料,環(huán)視學(xué)生,注意學(xué)生精神狀態(tài),組織教學(xué)。一、復(fù)習(xí)提問,導(dǎo)入任務(wù)(一)導(dǎo)入任務(wù):我們知道,在現(xiàn)實(shí)生活中,每個(gè)人扮演多種角色,那么我們的程序是如何做到的呢?。 本次課,我們的任務(wù)就是:繼承和多態(tài)。(二)復(fù)習(xí)提問:什么是類設(shè)計(jì)的標(biāo)準(zhǔn)?二、學(xué)習(xí)準(zhǔn)備,解析任務(wù)要完成任務(wù),我們先清楚一下我們需要解決哪些問題。具體如下:1)類定義是什么?2)如何讓對(duì)象有多種狀態(tài)?教師提示學(xué)生做好上課準(zhǔn)備教師導(dǎo)入并提出任務(wù)三、實(shí)踐操作,完成任務(wù)我們清楚并學(xué)習(xí)了與任務(wù)相關(guān)的技術(shù)理論知識(shí),解析并明確了任務(wù)的實(shí)訓(xùn)目標(biāo)及內(nèi)容。下面以小組為單位,分組學(xué)習(xí)、研究1.繼承和組合的概念在新類里簡(jiǎn)單地創(chuàng)建原有類的對(duì)象。我們把這種方法叫作“組合”,因?yàn)樾骂愑涩F(xiàn)有類的對(duì)象合并而成。我們只是簡(jiǎn)單地重復(fù)利用代碼的功能,而不是采用它的形式。第二種方法是創(chuàng)建一個(gè)新類,將其作為現(xiàn)有類的一個(gè)“類型”。我們可以原樣采取現(xiàn)有類的形式,并在其中加入新代碼,同時(shí)不會(huì)對(duì)現(xiàn)有的類產(chǎn)生影響。這種魔術(shù)般的行為叫作“繼承”(Inheritance),涉及的大多數(shù)工作都是由編譯器完成的。對(duì)于面向?qū)ο蟮某绦蛟O(shè)計(jì),“繼承”是最重要的基礎(chǔ)概念之一。對(duì)于組合和繼承這兩種方法,大多數(shù)語法和行為都是類似的(因?yàn)樗鼈兌家鶕?jù)現(xiàn)有的類型生成新類型)。2.組合也就是一個(gè)類的對(duì)象是另外一個(gè)類的成員,一般的程序都有組合的意味,只不過是基本數(shù)據(jù)類型是成員變量,下面請(qǐng)看具體的例子classHead{Head(){System.out.println("head");}}classBody{Body(){System.out.println("body");}}classPerson(){Headh=null;Bodyb=null;Person()//人是由頭和身體組成的,Head和Body的對(duì)象是Person的一部分{h=newHead();b=newBody();}}3.繼承作為面向?qū)ο蟮娜齻€(gè)重要特性的一個(gè)方面,在面向?qū)ο蟮念I(lǐng)域有著及其重要的作用,好像沒聽說哪個(gè)面向?qū)ο蟮恼Z言不支持繼承classPerson{privateStringname=null;privateintage=0;publicPerson(Stringn,inta){name=n;age=a;}intgetAge(){returnage;}StringgetName(){returnname;}voidgetDescription(){System.out.println("name:"+name+"/t"+"age:"+age);}}classStudentextendsPerson{privateStringstudno=null;publicStudent(Stringn,Stringno,inta){super(n,a);studno=no;}}說明:Student類中有三個(gè)成員變量name,age,studno和一個(gè)方法getDescription();注意:子類繼承了父類的所有變量和函數(shù),只是子類不能訪問父類的private類型的變量和函數(shù),其實(shí)privae類型的變量還是繼承到子類中的4.無論還是繼承,都允許我們將子對(duì)象置于自己的新類中。大家或許會(huì)奇怪兩者間的差異,以及到底該如何選擇。如果想利用新類內(nèi)部一個(gè)現(xiàn)有類的特性,而不想使用它的接口,通常應(yīng)選擇組合。也就是說,我們可嵌入一個(gè)對(duì)象,使自己能用它實(shí)現(xiàn)新類的特性。但新類的用戶會(huì)看到我們已定義的接口,而不是來自嵌入對(duì)象的接口??紤]到這種效果,我們需在新類里嵌入現(xiàn)有類的private對(duì)象。有些時(shí)候,我們想讓類用戶直接訪問新類的組合。也就是說,需要將成員對(duì)象的屬性變?yōu)閜ublic。成員對(duì)象會(huì)將自身隱藏起來,所以這是一種安全的做法。而且在用戶知道我們準(zhǔn)備合成一系列組件時(shí),接口就更容易理解。car(汽車)對(duì)象便是一個(gè)很好的例子:classEngine{publicvoidstart(){}publicvoidrev(){}publicvoidstop(){}}classWheel{publicvoidinflate(intpsi){}}classWindow{publicvoidrollup(){}publicvoidrolldown(){}}classDoor{publicWindowwindow=newWindow();publicvoidopen(){}publicvoidclose(){}}publicclassCar{publicEngineengine=newEngine();publicWheel[]wheel=newWheel[4];publicDoorleft=newDoor(),right=newDoor();//2-doorCar(){for(inti=0;i<4;i++)wheel[i]=newWheel();}publicstaticvoidmain(String[]args){Carcar=newCar();car.left.window.rollup();car.wheel[0].inflate(72);}}///:~由于汽車的裝配是故障分析時(shí)需要考慮的一項(xiàng)因素(并非只是基礎(chǔ)設(shè)計(jì)簡(jiǎn)單的一部分),所以有助于客戶程序員理解如何使用類,而且類創(chuàng)建者的編程復(fù)雜程度也會(huì)大幅度降低。如選擇繼承,就需要取得一個(gè)現(xiàn)成的類,并制作它的一個(gè)特殊版本。通常,這意味著我們準(zhǔn)備使用一個(gè)常規(guī)用途的類,并根據(jù)特定的需求對(duì)其進(jìn)行定制。只需稍加想象,就知道自己不能用一個(gè)車輛對(duì)象來組合一輛汽車——汽車并不“包含”車輛;相反,它“屬于”車輛的一種類別?!皩儆凇标P(guān)系是用繼承來表達(dá)的,而“包含”關(guān)系是用組合來表達(dá)的。5.protected現(xiàn)在我們已理解了繼承的概念,protected這個(gè)關(guān)鍵字最后終于有了意義。在理想情況下,private成員隨時(shí)都是“私有”的,任何人不得訪問。但在實(shí)際應(yīng)用中,經(jīng)常想把某些東西深深地藏起來,但同時(shí)允許訪問衍生類的成員。protected關(guān)鍵字可幫助我們做到這一點(diǎn)。它的意思是“它本身是私有的,但可由從這個(gè)類繼承的任何東西或者同一個(gè)包內(nèi)的其他任何東西訪問”。也就是說,Java中的protected會(huì)成為進(jìn)入“友好”狀態(tài)。我們采取的最好的做法是保持成員的private狀態(tài)——無論如何都應(yīng)保留對(duì)基礎(chǔ)的實(shí)施細(xì)節(jié)進(jìn)行修改的權(quán)利。在這一前提下,可通過protected方法允許類的繼承者進(jìn)行受到控制的訪問:importjava.util.*;classVillain{privateinti;protectedintread(){returni;}protectedvoidset(intii){i=ii;}publicVillain(intii){i=ii;}publicintvalue(intm){returnm*i;}}publicclassOrcextendsVillain{privateintj;publicOrc(intjj){super(jj);j=jj;}publicvoidchange(intx){set(x);}}///:~可以看到,change()擁有對(duì)set()的訪問權(quán)限,因?yàn)樗膶傩允莗rotected(受到保護(hù)的)。6.再論合成與繼承在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,創(chuàng)建和使用代碼最可能采取的一種做法是:將數(shù)據(jù)和方法統(tǒng)一封裝到一個(gè)類里,并且使用那個(gè)類的對(duì)象。有些時(shí)候,需通過“組合”技術(shù)用現(xiàn)成的類來構(gòu)造新類。而繼承是最少見的一種做法。因此,盡管繼承在學(xué)習(xí)OOP的過程中得到了大量的強(qiáng)調(diào),但并不意味著應(yīng)該盡可能地到處使用它。相反,使用它時(shí)要特別慎重。只有在清楚知道繼承在所有方法中最有效的前提下,才可考慮它。為判斷自己到底應(yīng)該選用組合還是繼承,一個(gè)最簡(jiǎn)單的辦法就是考慮是否需要從新類上溯造型回基礎(chǔ)類。若必須上溯,就需要繼承。但如果不需要上溯造型,就應(yīng)提醒自己防止繼承的濫用。但只要記住經(jīng)常問自己“我真的需要上溯造型嗎”,對(duì)于組合還是繼承的選擇就不應(yīng)該是個(gè)太大的問題教師以提問的方式考察學(xué)生學(xué)習(xí)情況學(xué)生做答教師總結(jié)并給出正確引導(dǎo)及解釋針對(duì)學(xué)生理解有困難的問題,教師講授,且借助圖示分析,便于學(xué)生理解時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)10分鐘完成任務(wù)的操作過程,并實(shí)踐操作,完成任務(wù)。我們看哪個(gè)小組組織得好,完成任務(wù)快,出錯(cuò)少。時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)2分鐘5分鐘(四)、學(xué)生反思,完成任務(wù)學(xué)生總結(jié)、完善任務(wù)操作,進(jìn)一步理解、應(yīng)用繼承。四、教學(xué)小結(jié),拓展思考本次課我們學(xué)習(xí)了繼承和多態(tài)的含義、功能,重點(diǎn)介紹繼承的實(shí)現(xiàn)。通過本次課的學(xué)習(xí),學(xué)生自主學(xué)習(xí)的能力得到了進(jìn)一步地鍛煉,更加熟悉任務(wù)教學(xué)法,而且小組的協(xié)作能力得到了提升。拓展思考:1.如何進(jìn)行方法的重寫和重載?2.類設(shè)計(jì)中如何進(jìn)行層次提升?學(xué)生修正操作,完成任務(wù)教師提出思考問題學(xué)生課下進(jìn)行拓展思考,

面向?qū)ο笙拢ń涌冢┙贪敢?、教學(xué)概要課題名稱面向?qū)ο蟪绦蛟O(shè)計(jì)理論教學(xué)時(shí)間2課時(shí)教學(xué)對(duì)象13級(jí)計(jì)算機(jī)應(yīng)用技術(shù)實(shí)踐教學(xué)時(shí)間4課時(shí)教學(xué)目標(biāo)定位與作用本次課主要學(xué)習(xí)接口的含義以及實(shí)現(xiàn)方法,確接口在Java面向?qū)ο蟪绦蛟O(shè)計(jì)與實(shí)踐中的地位和作用。學(xué)習(xí)狀態(tài)學(xué)生剛學(xué)習(xí)過程序設(shè)計(jì)的一些基礎(chǔ)知識(shí)以及類的定義和實(shí)現(xiàn),具備基本的程序設(shè)計(jì)能力,理解能力、自主學(xué)習(xí)能力初步有所提高,有基本的團(tuán)隊(duì)意識(shí),分析、解決問題的能力有待于培養(yǎng)、提高。教學(xué)重難點(diǎn)關(guān)鍵點(diǎn)重點(diǎn):接口如何定義、實(shí)現(xiàn)與使用。難點(diǎn):接口在Java面向?qū)ο蟪绦蛟O(shè)計(jì)中的作用。組織形式教學(xué)方法以班級(jí)與小組相結(jié)合的形式,主要采用任務(wù)引導(dǎo)教學(xué)法組織教學(xué)。教學(xué)準(zhǔn)備設(shè)備工具多媒體教室材料電子課件、實(shí)訓(xùn)報(bào)告、網(wǎng)絡(luò)素材教學(xué)環(huán)境東206教學(xué)小結(jié)

二、教學(xué)設(shè)計(jì)時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)教學(xué)組織:做好機(jī)房上課準(zhǔn)備工作,組織好學(xué)生就位、開機(jī),下發(fā)學(xué)習(xí)材料,環(huán)視學(xué)生,注意學(xué)生精神狀態(tài),組織教學(xué)。一、導(dǎo)入任務(wù)我們知道,在面向?qū)ο笾欣美^承實(shí)現(xiàn)代碼重寫,利用接口還有更好的方法。這樣可以實(shí)現(xiàn)多重繼承 本次課,我們的任務(wù)就是:定義接口。二、學(xué)習(xí)準(zhǔn)備,解析任務(wù)1.接口的含義(10min)。2.接口的實(shí)現(xiàn)(10min)。3.接口的使用(10min)。4.接口、接口實(shí)現(xiàn)、接口使用三者之間的統(tǒng)一關(guān)系與常見錯(cuò)誤(25min)。5.接口在Java面向?qū)ο蟪绦蛟O(shè)計(jì)與實(shí)踐中的作用(25min)。三、實(shí)踐操作,完成任務(wù)教師提示學(xué)生做好上課準(zhǔn)備教師導(dǎo)入并提出任務(wù)時(shí)間教學(xué)環(huán)節(jié)及主要內(nèi)容師生活動(dòng)有時(shí)候,我們可能想要構(gòu)造一個(gè)很抽象的父類對(duì)象,它可能僅僅代表一個(gè)分類或抽象概念,它的實(shí)例沒有任何意義,因此不希望它能被實(shí)例化。例如:有一個(gè)父類“水果(Fruit)”,它有幾個(gè)子類“蘋果(Apple)”、“橘子(Orange)”、“香蕉(Banana)”等。水果在這里僅僅只是作為一個(gè)分類,顯然水果的實(shí)例沒有什么意義(就好像一個(gè)人如果告訴你他買了一些水果但是卻不告訴你是蘋果還是橘子,你很難想象他到底買的是什么。)。而水果類又要能被子類化,這就要求我們使用抽象類(abstractclass)來解決這個(gè)問題。在java中,通過在class關(guān)鍵字前增加abstract修飾符,就可以將一個(gè)類定義成抽象類。抽象類不能被實(shí)例化。例如:定義抽象類水果(Fruit)publicabstractclassFruit{……}如果我們?cè)噲D用以下語句來獲得一個(gè)實(shí)例,將無法編譯成功。Fruitfruit=newFruit();而我們?nèi)匀豢梢詷?gòu)造水果類的子類,如:子類“蘋果(Apple)”publicclassAppleextendsFruit{……}子類“橘子(Orange)”publicclassOrangeextendsFruit{……}這樣就達(dá)到我們的目的了。抽象類除了能象普通類一樣可以擁有一般的屬性和方法,也可以擁有抽象方法(abstractmethod)。例如:抽象類“形狀(Shape)”擁有抽象方法draw()。publicabstractclassShape{……publicabstractvoiddraw();……}抽象方法與抽象的行為相對(duì)應(yīng),通常是這個(gè)行為對(duì)父對(duì)象沒有意義,而子對(duì)象有具體動(dòng)作。例如方法draw()對(duì)于類Shape沒有意義,而類Shape的子類矩形(Rectangle)的方法draw()可以有實(shí)際的動(dòng)作(根據(jù)矩形的四個(gè)頂點(diǎn)畫出矩形的四個(gè)邊),子類圓(Circle)的方法draw()也可以有實(shí)際的動(dòng)作(根據(jù)圓心和半徑畫出圓周)。抽象類可以有抽象方法也可以沒有抽象方法;但是如果一個(gè)類有抽象方法,那這個(gè)類只能定義為抽象類。如果按照以下代碼類“形狀(Shape)”仍然擁有抽象方法draw(),但沒有定義為抽象類,將會(huì)編譯失敗。publicclassShape{……publicabstractvoiddraw();……}抽象方法還有一個(gè)特點(diǎn)是,它強(qiáng)迫子類要么仍然保持抽象性(即不具體實(shí)現(xiàn)該方法并仍然定義為抽象類),要么具體表現(xiàn)出這個(gè)方法的行為(實(shí)現(xiàn)具體的動(dòng)作或者通過拋出UnsupportedOperationException異常來表明不支持該行為)。這樣也可以強(qiáng)化多態(tài)性。上面簡(jiǎn)要分析了抽象類,下面談?wù)劷涌冢╥nterface)。java語言使用關(guān)鍵字interface定義一個(gè)接口。接口也是抽象對(duì)象,它甚至比抽象類更抽象。接口中的方法都是抽象方法。一個(gè)接口可以繼承其他接口;一個(gè)類通過關(guān)鍵字implements聲明要實(shí)現(xiàn)一個(gè)接口,并具體實(shí)現(xiàn)接口的方法。例如:有一個(gè)接口InterfaceA,Java代碼publicinterfaceInterfaceA{voidmethodA();}類ClassA實(shí)現(xiàn)接口InterfaceA。Java代碼publicclassClassAimplementsInterfaceA{publicvoidmethodA(){System.out.println("methodAofClassAimplementsInterfaceA");}}如果是抽象類實(shí)現(xiàn)一個(gè)接口,那么抽象類中可以不具體實(shí)現(xiàn)接口的方法(保持其抽象性),而由其子類去實(shí)現(xiàn)。抽象類ClassB實(shí)現(xiàn)接口InterfaceA,但是沒有具體實(shí)現(xiàn)方法methodA(),Java代碼publicabstractclassClassB{}子類ClassBSub實(shí)現(xiàn)接口InterfaceA,但是沒有具體實(shí)現(xiàn)方法methodA(),Java代碼publicclassClassBSub{publicvoidmethodA(){System.out.println("methodAofClassBSubthesubclassofClassB");}}接口和抽象類顯著的共同點(diǎn)是接口和抽象類都可以有抽象方法。接口和抽象類的不同點(diǎn)有:(1)抽象類可以有實(shí)例變量,而接口不能擁有實(shí)例變量,接口中的變量都是靜態(tài)(static)的常量(final)。(2)抽象類可以有非抽象方法,而接口只能有抽象方法。java中,類與類之間是不能多繼承的。java之所以禁止類與類之間的多繼承是因?yàn)槎嗬^承有很大的缺點(diǎn)。多繼承雖然能使子類同時(shí)擁有多個(gè)父類的特征,但是其缺點(diǎn)也是很顯著的,主要有兩方面:(1)如果在一個(gè)子類繼承的多個(gè)父類中擁有相同名字的實(shí)例變量,子類在引用該變量時(shí)將產(chǎn)生歧義,無法判斷應(yīng)該使用哪個(gè)父類的變量。例如:類ClassA:publicclassClassA{protectedintvarSame=0;}類ClassB:publicclassClassB{protectedintvarSame=1;}子類ClassC:(假設(shè)允許類與類之間多繼承)publicclassClassCextendsClassA,ClassB{publicvoidprintOut(){System.out.println(super.varSame);}publicstaticvoidmain(String[]args){ClassCclassC=newClassC();classC.printOut();}}上面程序的運(yùn)行結(jié)果會(huì)是什么呢?輸出0還是1?(2)如果在一個(gè)子類繼承的多個(gè)父類中擁有相同方法,子類中有沒有覆蓋該方法,那么調(diào)用該方法時(shí)將產(chǎn)生歧義,無法判斷應(yīng)該調(diào)用哪個(gè)父類的方法。例如:類ClassA:publicclassClassA{publicvoidprintOut(){System.out.printl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論