freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[工學(xué)]java學(xué)習(xí)筆記之父類(lèi)與子類(lèi)(參考版)

2024-08-28 01:11本頁(yè)面
  

【正文】 錯(cuò)錯(cuò).........錯(cuò)了...20080123 修正:初始化 順序應(yīng)該是.父靜態(tài)變量子靜態(tài)變量父非靜態(tài)變量父靜態(tài)代碼塊父構(gòu)造函數(shù)子非變量子靜態(tài)代碼塊子構(gòu)造函數(shù)。先是父類(lèi)的屬性在前,在是子類(lèi)的屬性,再是父類(lèi)的構(gòu)造方法,再是子類(lèi)的構(gòu)造方法,再是父類(lèi)與子類(lèi)的方法,如果方法有覆蓋的,用子類(lèi)的。執(zhí)行父類(lèi)的構(gòu)造函數(shù)子類(lèi)的成員變量的初始化值 〉執(zhí)行子類(lèi)的構(gòu)造函數(shù)。 父類(lèi)的成員變量的初始化值〉如果初始化成員變量時(shí)要調(diào)用父類(lèi)的方法(如private int a=getData()。因?yàn)檫@個(gè),b的值就是剛開(kāi)始的初始值0。這是正確的,即使是在a是從B的f方法中初始化的并且打印的是a 和 B的 f 方法的值。(())。}}public class CtorDemo4 {public static void main(String args[]) {B bobj = new B()。}}class B extends A {int b = 37。最后一個(gè)例子說(shuō)明了第一個(gè)例子的一個(gè)小小的變異版本:class A {int a = f()。A產(chǎn)生的構(gòu)造方法體被執(zhí)行,然后B的成員被初始化,而b 被賦予值a,也就是2。然后A中的成員被初始化,成員a 被設(shè)置為方法f()的值,但是因?yàn)锽 對(duì)象正被初始化,f() 返回值2。如果返回第一個(gè)例子,你就可以回答為什么打印的是2而不是1。當(dāng)那樣的構(gòu)造方法被調(diào)用,它將執(zhí)行通常的super() 過(guò)程以及后續(xù)的操作。}}程序的輸出是: called(int) called calledinitialization block executed(int) called() called這個(gè)例子明確使用super() 和 this() 調(diào)用。return 47。((int) called)。(() called)。(initialization block executed)。int j。((int) called)。讓我們來(lái)看看初始化的另一個(gè)例子:class A {A() {( called)。}Method A()0 aload_01 invokespecial 14 returnMethod void main([])0 new 23 dup4 invokespecial 37 astore_18 return在main 中,注意對(duì) A 的構(gòu)造方法的調(diào)用(就是invokespecial 行),以及A的構(gòu)造方法中產(chǎn)生的類(lèi)似的對(duì)Object 構(gòu)造方法的調(diào)用。}} 中的字節(jié)碼,輸入下面的內(nèi)容:$ javac $ javap c classpath . A輸出:Compiled from public class A extends {public A()。缺省構(gòu)造方法只有在類(lèi)沒(méi)有任何其它的構(gòu)造方法時(shí)才產(chǎn)生。提供給構(gòu)造方法的第一行。this(args)。super(args)。你可能會(huì)問(wèn)“什么是對(duì)父類(lèi)的構(gòu)造方法的隱含調(diào)用”。然后B對(duì)象的成員被初始化, 的調(diào)用和包圍在{}中的初始?jí)K的執(zhí)行。}}程序的輸出是: called calledinitialization block executed calledB 的構(gòu)造方法被調(diào)用,但是最先做的事情是隱含的調(diào)用父類(lèi)的構(gòu)造方法。return 47。}B() {( called)。{j = 37。}}class B extends A {int i = f()。畢竟,類(lèi)B中的b 的值是用類(lèi)A中的a的值初始化的,而a 是用f 的值初始化的,而它的值為1,對(duì)嗎?實(shí)際上, 的值是2,要知道為什么需要知道對(duì)象初始化的問(wèn)題。()。int f() {return 2。int f() {return 1。 以下在構(gòu)造器 里構(gòu)造器自己是不對(duì)的public test() { s = new test()??纯聪旅娴拇a: public class Example { public void sayHi { (Hi)。 } } 繼承 構(gòu)造器是不能被繼承的。當(dāng)我們寫(xiě)一個(gè)沒(méi)有構(gòu)造器的類(lèi),編譯的時(shí)候,編譯器會(huì)自動(dòng)加上一個(gè)不帶參數(shù)的構(gòu)造器,例如:public class Example {} 編譯后將如下代碼: public class Example { Example() {} } 在構(gòu)造器的第一行,沒(méi)有使用super,那么編譯器也會(huì)自動(dòng)加上,例如: public class TestConstructors { TestConstructors() {} } 編譯器會(huì)加上代碼,如下: public class TestConstructors { TestConstructors() { super。 } } 在上面這個(gè)沒(méi)有什么實(shí)際意義的例子中,構(gòu)造器 Child()包含了 super,它的作用就是將超類(lèi)中的構(gòu)造器SuperClassDemo實(shí)例化,并加到 Child類(lèi)中。而且這行代碼必須放在第一行,否則編譯將出錯(cuò)。 } } 在上面的例子中,()去調(diào)用超類(lèi)Mammal中被重載的方法。 (a mammal normally is )??聪旅娴睦樱?class Mammal { void getBirthInfo() { (born alive.)。 super的用法 構(gòu)造器和方法,都用關(guān)鍵字super指向超類(lèi),但是用的方法不一樣。 } } 在上面的代碼中,有2個(gè)不同參數(shù)列表的構(gòu)造器。 } public static void main(String args[]) { Platypus p1 = new Platypus(digger)。 Platypus(String input) { name = input。靜態(tài)方法不能使用this關(guān)鍵字,因?yàn)殪o態(tài)方法不屬于類(lèi)的實(shí)例,所以this也就沒(méi)有什么東西去指向。 this的用法 構(gòu)造器和方法使用關(guān)鍵字this有很大的區(qū)別。按照習(xí)慣,方法通常用小寫(xiě)字母開(kāi)始,而構(gòu)造器通常用大寫(xiě)字母開(kāi)始。 最后,談?wù)剝烧叩拿?返回類(lèi)型也是非常重要的。 修飾符,返回值和命名的不同 構(gòu)造器和方法在下面三個(gè)方便的區(qū)別:修飾符,返回值,命名。這個(gè)過(guò)程也可以在創(chuàng)建一個(gè)對(duì)象的時(shí)候用到:Platypus p1 = new Platypus()。下面將簡(jiǎn)單介紹一下 ,最后用一個(gè)表作了些簡(jiǎn)單的總結(jié)。同樣地,要理解構(gòu)造器,那么就要了解構(gòu)造器和方法的區(qū)別。(按:老外喜歡打比喻,我也就照著翻譯)。}}class Rmb{public Rmb(){ (RMB is construct)。 } public static void main(String[] args){ new Dollar()。例子:public class Dollar extends Money{ Rmb r=new Rmb()。幾點(diǎn)總結(jié):(1)對(duì)象是由new運(yùn)算符創(chuàng)建的,且在任何構(gòu)造函數(shù)執(zhí)行之前就已經(jīng)創(chuàng)建完畢了(2)構(gòu)造函數(shù)的執(zhí)行總是“向上”的:而且總是先執(zhí)行完父類(lèi)的構(gòu)造函數(shù)(3)在構(gòu)造函數(shù)中,沒(méi)有this()語(yǔ)句則由super()語(yǔ)句。(14)(Manager ok)。birthday=DoB。(12)(2)。(10)(3)。有,則執(zhí)行構(gòu)造函數(shù)public Employee(String n,Date DoB)(6)綁定構(gòu)造函數(shù)參數(shù)String n,Date DoB(7)查看是否有this()語(yǔ)句。雖然沒(méi)有使用this()語(yǔ)句調(diào)用構(gòu)造函數(shù),但是該步驟不能省略(3)調(diào)用super()語(yǔ)句,此時(shí),程序跳轉(zhuǎn)到Public Employee(String n)。其實(shí)就是傳遞參數(shù)的過(guò)程(2)查看是否有this()語(yǔ)句。 }}public class Test1{ public static void main(String args[]) { new Manager(Smith,sales)。 public Manager(String n,String d) { super(n)。 }}class Manager extends Employee{ { (Manager ok)。 } public Employee(String n) { this(n,null)。 name=n。 private Date birthday。 }}class Employee extends super1{ private String name。class super1{ { (super1 ok)?! ”疚闹链丝梢哉f(shuō)結(jié)束了,由于本人的java功底并不很扎實(shí),java規(guī)范看得也不完整,因此文中可能有錯(cuò)誤,如果您覺(jué)得某些地方有錯(cuò)誤的話(huà),歡迎通過(guò)mail聯(lián)系?! ?)的注釋取消,編譯運(yùn)行后輸出多了父類(lèi)和子類(lèi)的靜態(tài)初始化塊部分的執(zhí)行輸出(使用子類(lèi)的類(lèi)對(duì)象將導(dǎo)致生成父類(lèi)的類(lèi)對(duì)象,父類(lèi)先于子類(lèi)構(gòu)造)?! ?duì)構(gòu)造過(guò)程的另一個(gè)細(xì)節(jié)你可能還不相信,就是順序中的第二條關(guān)于非靜態(tài)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1