1.描述一個類如描述一個杯子?,
需要描述什么,寬,高,形狀,顏色等除此之外,還需要描述什么?這個杯子能做什么:盛水,倒水那么對于一個類來說 寬,高,形狀便是他的屬性-即身上具有的性質,對比于Java類中的屬性即成員變量,常量,而盛水,倒水便是它能做的事情,即方法類并不實際存在,類只是一個模糊的概念,抽象,它是定義一類事物的一個規(guī)范
2.對象是實際存在的個體對比類和對象最鮮活的例子便是 人和某一個同學人即是對某一類事物的一個定義,而某一個同學即是人這一個定義的實體
3.關鍵字:繼承 extends this的調用extends繼承子類繼承父類兩個權限修飾符 public private相當于找了一個干爹,我沒有的東西干爹有(包括屬性和方法),那就直接拿過來用,但是有些東西干爹不愿意給你public class Father {? int a=1;? private? int b=1;? void prin() { ? System.out.println("father");? }}class Son extends Father{ public static void main(String[] args) { Son s=new Son(); s.prin(); System.out.println(s.a); System.out.println(s.b);//報錯 }}this返回當前對象 int i=0; Test (int i){ this.i=i; //? this.add();} Test add() { i++; return this; //? } public void prin(){ System.out.println(i); }? ? public static void main(String[] args) {? ? Test t=new Test(5);? ? t.add().add().prin(); }輸出8分析一個程序從main方法開始逐步向下,未學線程,程序逐條運行,只有一條路線t.add();方法執(zhí)行完畢 t.add()這個方法變?yōu)榱藅這個對象 t.add()=t;
----------------------------------------------------------------4.super關鍵字
public class Test { void f() { System.out.println("father");}}class Son extends Test{? ? void f() {? ? ? ? super.f();? ? ? ? System.out.println("son");}}如果不加super.f();則子類方法完全覆蓋父類方法只輸出son如果加上super.f();則依舊調用父類的f方法,輸出father和son如果子類中沒有重寫父類中的某個方法,但子類新建對象調用方法,則默認調用父類的該方法5.構造方法子類的構造過程中必須調用其父類的構造方法,若無顯式調用,則隱式調用無參構造函數(shù)(若父類不寫構造方法,則默認生成一個無參構造方法,里面為空)子類只能在自己的構造方法中使用super(argument_list)調用基類的構造方法如果子類的構造方法沒有顯式的調用父類構造方法,則默認調用基類無參構造方法如果子類的構造方法中既沒有顯式調用基類構造方法,而基類中又沒有無參的構造方法,則編譯出錯構造方法調用super必須在第一行public class Test { Test(){ System.out.println("test1"); } Test(int r){ System.out.println("test2"); }public class Son extends Test{ int b=0; Son(){ }}