java中“類”和“對象”到底有什么聯(lián)系

object和Class配合工作原理  
【新手可忽略不影響繼續(xù)學習】 Class是"類"的意思,是抽象的,并沒有具體的說是哪個東西。而object是具體的,實實在在存在的一個東西,一個物體。比如車就是一個類,而不是一個object,因為車這個概念是抽象的,并沒有具體指明是哪輛車。而車牌號為京HT3113的這輛車就是一個object,因為它實實在在的存在。而另外一輛車牌號為京jw2344車是另外一個實實在在的object,這兩個object屬于一類叫"車"。車這一類有別于另外一類:窗體window。window是類而不是object,原因是你并沒有實實在在,具體的指明,@馬克-to-win是哪一個window,而我電腦上,暴風的window或迅雷的window就是兩個具體的實實在在的object。
馬克- to-win:馬克 java社區(qū):防盜版實名手機尾號: 73203。
【新手可忽略不影響繼續(xù)學習】 類相對于對象來講是抽象的,但好處是可以總結提取出所有對象的共同性,比如車這類都是有四個輪子的,而window這類都有寬度,且window這類可以被關閉。這樣屬于window這一類的對象,比如暴風window或迅雷window都有寬度,@馬克-to-win且都可以被關閉。福利來了,"關閉"這行為,所有window對象都有。具有共性的”關閉”行為如果放在類中只需放一份,而放在對象中卻要放n份,我們立刻看出了類和對象協(xié)同工作的好處。好,綜上所述,我們給出代碼:

本章源碼
class Window {
    int width;
    int height;
/*close放在類中只需放一份。省去重復工作, 每個object都可以用, 當調(diào)用baoFengObject.close();時, 以下方法被執(zhí)行,其中width變量,是baoFengObject的屬性,而不是xunLeiObject的屬性。 */
    void close() {
        System.out.println("kuan" + width + "的window被關閉。");
    }
}

public class Test {
    public static void main(String[] args) {
/*Window baoFengObject = new Window();和 int a=3如出一轍, int a=3說明a是int這個類型的,而不是float
 這個類型的。Window baoFengObject = new Window(); 說明baoFengObject這個對象屬于window這個類, 而不是
 車這個類的, 而且int a=3 在內(nèi)存中分配了a這個空間等于3,而Window baoFengObject = new Window();時
 baoFengObject在內(nèi)存 中初始化了,被分配了空間,其中width初始化成了0 @馬克-to-win*/
        Window baoFengObject = new Window();
        baoFengObject.width=999;//999代表暴風
        baoFengObject.height=999;//999代表暴風
        Window xunLeiObject = new Window();
        xunLeiObject.width=111;//111代表迅雷    
        xunLeiObject.height=111;//111代表迅雷    
/* 有新手怎么都不明白下面一句的意思?什么是baoFengObject.close(); ,好,在前面java一章,我們學過方法,method,子函數(shù),這些都是一回事,close()方法,close()子函數(shù)總明白吧?這里 baoFengObject.close(),說的就是調(diào)用baoFengObject的close()方法*/
        baoFengObject.close();
        xunLeiObject.close();
    }
}

結果是:
kuan999的window被關閉。
kuan111的window被關閉。




補充:c語言子函數(shù)背景知識:

public class Test {
    static void close() { //這是子函數(shù)
        System.out.println("kuan" + "的window被關閉。");
    }
    public static void main(String[] args) {
        close();//這是主函數(shù),無輸入?yún)?shù),無返回值
        System.out.println("完了");
    }
}

輸出結果:
kuan的window被關閉。
完了




作業(yè):
1)做一個類名字叫Phone,有兩個屬性,分別叫做pinpai和jiage,再編一個方法叫print,生成一個對象叫做huawei,pinpai是字符串類型,名叫華為。jiage的類型是int,是3000。在測試類當中打印他自己的價格和品牌。再生成一個對象,叫做蘋果,價格是4000元,品牌是蘋果。


class Phone{
    String pinpai;
    int jiage;
   void print() {
        System.out.println(pinpai +  jiage);
    }
}

public class Test {
    public static void main(String[] args) {
        Phone huawei = new Phone();
        huawei.pinpai="華為";
        huawei.jiage=3000;
        Phone pingguo = new Phone();
        pingguo.pinpai="蘋果";
        pingguo.jiage=4000;   
        huawei.print();
        pingguo.print();
    }
}

2)把過去找大數(shù)的作業(yè)改編成放在現(xiàn)在的類里。(專門做了一個視頻一步一步的演示怎么做的。)



我們把c語言中的一個例題找大數(shù)拿來:
public class Test {
    public static void main(String[] args) {
        int a = 3;
        int b = 2;
        int k = zhaodashu(a, b);
        System.out.println(k);
    }

    static int zhaodashu(int x, int y) {
        int c = 0;
        if (x < y) {
            c = y;
        }
        if (x > y) {
            c = x;
        }
        return c;
    }
}
仿照上面的例子,做一個類MyMath,里面沒有屬性,但有個方法叫zhaodashu,找大數(shù),輸入?yún)?shù)有兩個,返回值是大數(shù)。主程序測試類還是Test。

答案:

class MyMath {
    int zhaodashu(int x, int y) {
        int c = 0;
        if (x < y) {
            c = y;
        }
        if (x > y) {
            c = x;
        }
        return c;
    }
}

public class Test {
    public static void main(String[] args) {
        int a = 3;
        int b = 2;
        MyMath huawei = new MyMath();
        int k =huawei.zhaodashu(a, b);
        System.out.println(k);
    }
}


3)把上一章的9.1作業(yè)找質(zhì)數(shù),改編一下,做一個類MyMath,里面有個方法叫findPrime,找質(zhì)數(shù),輸入?yún)?shù)有兩個(上限和下限),無返回值。