publicclassCat{publicvoideat(){System.out.println("貓吃魚");}}publicclassCatOpeterator{publicvoiduseCat(Cat c){//Cat c = new Cat;c.eat();}public Cat getCat(){Cat c =newCat();return c;}}publicclassdemo{publicstaticvoidmain(String[] args){CatOpeterator co =newCatOpeterator();Cat c =newCat();co.useCat(c);Cat c2 = co.getCat();c2.eat();}}
publicabstractclassAnimal{publicabstractvoideat();}publicclassCatextendsAnimal{@Overridepublicvoideat(){System.out.println("貓吃魚");}}publicclassAnimalOperator{publicvoiduseAnimal(Animal a){//Animal a = new Cat();a.eat();}public Animal getAnimal(){Animal a =newCat();return a;}}publicclassdemo{publicstaticvoidmain(String[] args){AnimalOperator ao =newAnimalOperator();Animal a =newCat();ao.useAnimal(a);Animal a2 = ao.getAnimal();a2.eat();}}
/*
內部類的訪問特點內部類可以直接訪問外部類的成員,包括私有外部類要訪問內部類的成員,必須創建對象
*/publicclassOuter{privateint num =10;publicclassInner{publicvoidshow(){System.out.println(num);}}publicvoidmethod(){Inner i =newInner();i.show();}}
2.2 成員內部類
成員內部類的定義位置 在類中方法,跟成員變量是一個位置
外界創建成員內部類格式 格式:外部類名.內部類名 對象名 = 外部類對象.內部類對象; 舉例:Outer.Inner oi = new Outer().new Inner();
publicclassOuter{privateint num =10;privateclassInner{publicvoidshow(){System.out.println(num);}}publicvoidmethod(){Inner i =newInner();i.show();}}publicclassdemo{publicstaticvoidmain(String[] args){Outer o =newOuter();o.method();}}
classOuter{privateint num =10;publicvoidmethod(){int num2 =20;classInner{publicvoid show (){System.out.println(num);System.out.println(num2);}}Inner i =newInner();i.show();}}publicclassdemo{publicstaticvoidmain(String[] args){Outer o =newOuter();o.method();}}
publicinterfaceJumping{voidjump();}publicclassCatimplementsJumping{@Overridepublicvoidjump(){System.out.println("貓跳高");}}publicclassDogimplementsJumping{@Overridepublicvoidjump(){System.out.println("狗跳高");}}publicclassJumpingOpertor{publicvoidmethod(Jumping j){j.jump();}}publicclassdemo{publicstaticvoidmain(String[] args){JumpingOpertor jo =newJumpingOpertor();Jumping j =newCat();jo.method(j);Jumping j2 =newDog();jo.method(j2);System.out.println("-------");//匿名內部類的簡化jo.method(newJumping(){@Overridepublicvoidjump(){System.out.println("貓可以調高了");}});}}
3. 常用API
3.1 Math
1、Math類概述
Math 包含執行基本數字運算的方法
2、Math中方法的調用方式
Math類中無構造方法,但內部的方法都是靜態的,則可以通過 類名.進行調用
3、Math類的常用方法
public static int abs(int a) 返回參數的絕對值
public static double ceil(double a) 返回大于或等于參數的最小double值,等于一個整數
public static double floor(double a) 返回小于或等于參數的最大double值,等于一個整數
public static int round(float a) 按照四舍五入返回最接近參數的int
public static int max(int a,int b) 返回兩個int值中的較大值
public static int min(int a,int b) 返回兩個int值中的較小值
public static double pow (double a,double b) 返回a的b次冪的值
public static double random() 返回值為double的正值,[0.0,1.0)
3.2 System
- System類的常用方法
public static void exit(int status) 終止當前運行的 Java 虛擬機,非零表示異常終止
public static long currentTimeMillis() 返回當前時間(以毫秒為單位)
publicclassArraydemo{publicstaticvoidmain(String[] args){int[] arr ={24,69,80,57,13};System.out.println("排序前:"+arrarytoString(arr));for(int x =0; x < arr.length -1; x++){for(int i =0; i < arr.length -1- x; i++){if(arr[i]> arr[i +1]){int temp = arr[i];arr[i]= arr[i +1];arr[i +1]= temp;}}}System.out.println("排序后:"+arrarytoString(arr));}publicstatic String arrarytoString(int[] arr){StringBuilder s =newStringBuilder();s.append("[");for(int i =0; i < arr.length; i++){if(i == arr.length -1){s.append(arr[i]);}else{s.append(arr[i]).append(", ");}}s.append("]");String s1 = s.toString();return s1;}}
3.7 Arrays
Arrays的常用方法public static String toString(int[] a) 返回指定數組的內容的字符串表示形式 public static void sort(int[] a) 按照數字順序排列指定的數組
工具類設計思想 1、構造方法用 private 修飾 2、成員用 public static 修飾