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ù)有兩個(上限和下限),無返回值。