Java物件導向之封裝

來源:互聯網
上載者:User

標籤:wap   函數   ret   min   static   turn   print   rgs   載入   

有多個對象都要用到同一個功能或者多個功能,那就先定義一個工具類,之後調用

class ArrayTool{    public int getMax(int[] arr){        int max=0;        for(int x=1;x<arr.length;x++)        {            if(arr[x]>arr[max])                max=x;        }        return arr[max];    }    public int getMin(int[] arr){        int min=0;        for(int x=1;x<arr.length;x++)        {            if(arr[x]<arr[min])                min=x;        }        return arr[min];    }    public void selectSort(int [] arr)    {        for(int x=0;x<arr.length-1;x++)        {            for(int y=x+1;y<arr.length;y++)            {                if(arr[x]>arr[y])                    swap(arr,x,y);            }        }    }    public void bubbleSort(int []arr)    {        for(int x=0;x<arr.length-1;x++)        {            for(int y=0;y<arr.length-x-1;y++)            {                if (arr[y] > arr[y+1])                    swap(arr,y,y+1);            }        }    }    public void swap(int []arr,int a,int b)    {        int temp=arr[a];        arr[a]=arr[b];        arr[b]=temp;    }}
public class hello {    public static void main(String[] args)    {        int[] arr={3,4,1,8};        ArrayTool tool=new ArrayTool();        int max=tool.getMax(arr);        System.out.println("max="+max);    }}

雖然可以通過建立ArrayTool這個對象對數組調用批量工具對數組進行操作,但是發現了問題

1.對象是用於封裝資料的,可是ArrayTool對象並未封裝持有資料

2.操作詩句的每一個方法都沒有用到ArrayTool對象中的特有資料

這時就考慮,不需要對象

可以將ArrayTool 中的所有方法都定義為靜態,直接通過類名調用

但是還可以將其new對象,通過構造對象私人化,阻止建立對象,還有swap這樣的函數不需要暴露給外界

class ArrayTool{
private ArrayTool(){} public static int getMax(int[] arr){ int max=0; for(int x=1;x<arr.length;x++) { if(arr[x]>arr[max]) max=x; } return arr[max]; } public static int getMin(int[] arr){ int min=0; for(int x=1;x<arr.length;x++) { if(arr[x]<arr[min]) min=x; } return arr[min]; } public static void selectSort(int [] arr) { for(int x=0;x<arr.length-1;x++) { for(int y=x+1;y<arr.length;y++) { if(arr[x]>arr[y]) swap(arr,x,y); } } } public static void bubbleSort(int []arr) { for(int x=0;x<arr.length-1;x++) { for(int y=0;y<arr.length-x-1;y++) { if (arr[y] > arr[y+1]) swap(arr,y,y+1); } } } private static void swap(int []arr,int a,int b) { int temp=arr[a]; arr[a]=arr[b]; arr[b]=temp; }}
public class ArrayToolDemo {    public static void main(String[] args)    {        int[] arr={3,4,1,8};        int max=ArrayTool.getMax(arr);        System.out.println("max="+max);    }}

 一個類中預設會有一個空參數的建構函式;

這個預設的建構函式的許可權和所屬類一致(public or no);

如果類被public 修飾,那麼預設的建構函式也帶public修飾符;

如果類沒有被public修飾,那麼預設的建構函式也沒有public修飾。

 

執行順序

Person p=new Person(參數);

類載入,靜態代碼塊載入,屬性(非靜態)載入,預設初始化,顯示初始化(直接賦值),構造代碼塊載入,建構函式初始化

Java物件導向之封裝

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.