今天學(xué)習(xí)了部分java課程,以下為今天課堂的總結(jié):
java 內(nèi)存:
兩種內(nèi)存存在形式:
棧內(nèi)存-------------------------------------------堆內(nèi)存
【基本數(shù)據(jù)類型】 開(kāi)辟的數(shù)組空間
【首地址】 對(duì)象空間【成員變量,成員方法】
java垃圾回收(Gc):
jvm(java 虛擬機(jī))在執(zhí)行程序的過(guò)程中,會(huì)啟動(dòng)垃圾回收線程,該程序會(huì)自動(dòng)掃描內(nèi)存中數(shù)據(jù),判斷是否為垃圾數(shù)據(jù);如果是垃圾數(shù)據(jù),將會(huì)回收該數(shù)據(jù)釋放內(nèi)存空間,可以防止內(nèi)存溢出。
內(nèi)存溢出:內(nèi)存占滿了,不能寫入新的數(shù)據(jù),導(dǎo)致程序不能繼續(xù)執(zhí)行。
注意:垃圾回收不需要程序員處理,同時(shí)程序員不能干預(yù)垃圾回收過(guò)程,但是程序用完的數(shù)據(jù),需要斷開(kāi)對(duì)其的引用。
面向?qū)ο蟮娜筇攸c(diǎn):封裝,繼承,多態(tài)
封裝的目的:程序的安全性和完整性
封裝:將類中的成員變量、成員方法、構(gòu)造器隱藏,不讓外部的其他類訪問(wèn)
屬性封裝:1.將屬性設(shè)為PRivate
2.提供公共的getter和setter方法
子類可以繼承同包下父類所有的非私有化屬性和方法;
子類在非同包下只能繼承公共的和受保護(hù)的屬性和方法。
子類不能繼承父類的構(gòu)造器,但是可以調(diào)用父類的構(gòu)造器。
繼承:當(dāng)多個(gè)類出現(xiàn)相同的屬性和方法時(shí),我們將這些屬性和方法抽取出來(lái)放入一個(gè)類中,讓多個(gè)類共享這個(gè)類中的屬性和方法。其中,這個(gè)類我們叫做父類,多個(gè)類我們叫做子類。
作用: 減少類之間重復(fù)代碼的定義,提高代碼的重用性
繼承的語(yǔ)法:
【修飾符】 class 子類名 extends 父類{}
繼承的范圍: 子類只能繼承父類中的成員變量和成員方法,不能繼承構(gòu)造器
1.同包下,子類繼承父類的非私有的屬性和方法
2.不同包下,子類繼承父類的公共的和受保護(hù)的屬性和方法
子類的擴(kuò)展:
子類繼承父類的屬性和方法,同時(shí)還可以可以擴(kuò)展自己特有的屬性和方法。
繼承的特點(diǎn): java 單繼承,不可多繼承,但是允許類之間多層繼承關(guān)系
方法重寫的前提:1.繼承 2.子類修飾符范圍大于父類 3.返回值類型、方法名、參數(shù)相同
關(guān)鍵字 super
super代表父類對(duì)象
1.使用方法;super.成員變量/成員方法
如果子類的屬性和方法覆蓋了父類的屬性和方法時(shí),在子類中,直接訪問(wèn)屬性和方法,訪問(wèn)的時(shí)子類的屬性和方法,要想訪問(wèn)父類的屬性和方法需要使用super關(guān)鍵字
在子類實(shí)例化的時(shí)候,系統(tǒng)會(huì)先實(shí)例父類,然后再實(shí)例化子類
系統(tǒng)在實(shí)例化父類時(shí),默認(rèn)調(diào)用父類的無(wú)參構(gòu)造器
2.super(參數(shù)) 可以用于調(diào)用父類的有參構(gòu)造器,在子類構(gòu)造器中使用supper來(lái)指定
多態(tài):
多態(tài)的實(shí)現(xiàn)情況:1.繼承 2.方法重寫 3.向上轉(zhuǎn)型
向上轉(zhuǎn)型:【子對(duì)象】由子類型轉(zhuǎn)為【父類型】
子對(duì)象向上轉(zhuǎn)型之后,只能訪問(wèn)繼承的屬性和方法,如果該方法被重寫,則訪問(wèn)重寫之后的方法
多態(tài)的作用:減少代碼量,減少代碼的耦合性
方法重寫的概念:子類對(duì)繼承的方法進(jìn)行重新定義的現(xiàn)象
方法重寫的例子:
package _0303;public class Override1 {int a,b,c;public void test1(){System.out.println("Override1---------------test1");}public void test1(int i){System.out.println("Override1----"+i+"-------test1");}}
package _0303;public class Override2 extends Override1{public void test1(){System.out.println("Override2---------------test1");}}
多態(tài)和繼承的例子:
package duotai;public class C1 extends P{ @Override public void test1() { // TODO Auto-generated method stub System.out.println("C1 11111111"); }}
package duotai;public class C2 extends P{public void test1(){System.out.println("C2 2222222");}}
package duotai;public class P {public void test1(){System.out.println("test1p111111");}public void test2(){System.out.println("test2p111111");}}
package duotai;public class Test1 { private void test(P p) { p.test1(); } public static void main(String[] args) {Test1 t1 = new Test1();t1.test(new P());t1.test(new C1());t1.test(new C2());}}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注