java中“类”和“对象”到底有什么联系

object和Class配合工作原理  
【新手可忽略不影响继续学习】 Class是"类"的意思,是抽象的,并没有具体的说是哪个东西。而object是具体的,实实在在存在的一个东西,一个物体。比如车就是一个类,而不是一个object,因为车这个概念是抽象的,并没有具体指明是哪辆车。而车牌号为京HT3113的这辆车就是一个object,因为它实实在在的存在。而另外一辆车牌号为京jw2344车是另外一个实实在在的object,这两个object属于一类叫"车"。车这一类有别于另外一类:窗体window。window是类而不是object,原因是你并没有实实在在,具体的指明,@马克-to-win是哪一个window,而我电脑上,暴风的window或迅雷的window就是两个具体的实实在在的object。
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
【新手可忽略不影响继续学习】 类相对于对象来讲是抽象的,但好处是可以总结提取出所有对象的共同性,比如车这类都是有四个轮子的,而window这类都有宽度,且window这类可以被关闭。这样属于window这一类的对象,比如暴风window或迅雷window都有宽度,@马克-to-win且都可以被关闭。福利来了,"关闭"这行为,所有window对象都有。具有共性的”关闭”行为如果放在类中只需放一份,而放在对象中却要放n份,我们立刻看出了类和对象协同工作的好处。好,综上所述,我们给出代码:

本章源码
class Window {
    int width;
    int height;
/*close放在类中只需放一份。省去重复工作, 每个object都可以用, 当调用baoFengObject.close();时, 以下方法被执行,其中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 在内存中分配了a这个空间等于3,而Window baoFengObject = new Window();时
 baoFengObject在内存 中初始化了,被分配了空间,其中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,子函数,这些都是一回事,close()方法,close()子函数总明白吧?这里 baoFengObject.close(),说的就是调用baoFengObject的close()方法*/
        baoFengObject.close();
        xunLeiObject.close();
    }
}

结果是:
kuan999的window被关闭。
kuan111的window被关闭。




补充:c语言子函数背景知识:

public class Test {
    static void close() { //这是子函数
        System.out.println("kuan" + "的window被关闭。");
    }
    public static void main(String[] args) {
        close();//这是主函数,无输入参数,无返回值
        System.out.println("完了");
    }
}

输出结果:
kuan的window被关闭。
完了




作业:
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)把过去找大数的作业改编成放在现在的类里。(专门做了一个视频一步一步的演示怎么做的。)



我们把c语言中的一个例题找大数拿来:
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,找大数,输入参数有两个,返回值是大数。主程序测试类还是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作业找质数,改编一下,做一个类MyMath,里面有个方法叫findPrime,找质数,输入参数有两个(上限和下限),无返回值。