两村共饮一井水

Village类

public class Village {
	   static int waterAmount;  
	    int peopleNumber;  
	    String name;  
	    Village(String s){
	    	name=s;
	    }  
	    static void setWaterAmount(int m){ 
	    	if(m>0)
	    		waterAmount=m;
	    }  
	    void drinkWater(int n){  
	    	if(waterAmount-n>=0){
	    		System.out.println(name+"喝了"+n+"升水");
	    	    waterAmount=waterAmount-n;
	    	}
	    	else
	    		waterAmount=0;
	    }  
	    static int lookWaterAmount(){
	    	System.out.println("水井还有"+waterAmount+"升水");
	    	return waterAmount;
	    }  
	    void setPeopleNumber(int n){ 
	    	peopleNumber=n;
	    }  
	    int getPeopleNumber(){ 
	    	return peopleNumber;
	    } 

}


Land类

public class Land {
    public static void main(String args[]){  
        Village.setWaterAmount(200);  
        int leftWater=Village.waterAmount;  
        System.out.println("水井中有"+leftWater+"升水");  
        Village zhaozhuang,majiahezhi;  
        zhaozhuang=new Village("赵庄");  
        majiahezhi=new Village("马家河子");  
        zhaozhuang.setPeopleNumber(80);  
        majiahezhi.setPeopleNumber(120);  
        zhaozhuang.drinkWater(50);  
        leftWater=zhaozhuang.lookWaterAmount();  
        String name=majiahezhi.name;  
        System.out.println(name+"发现水井中有"+leftWater+"升水");  
        majiahezhi.drinkWater(100);  
        leftWater=majiahezhi.lookWaterAmount();  
        name=zhaozhuang.name;  
        System.out.println(name+"发现水井中有"+leftWater+"升水");  
        int peopleNumber=zhaozhuang.getPeopleNumber();  
        System.out.println("赵庄的人口"+peopleNumber);  
        peopleNumber=majiahezhi.getPeopleNumber();  
        System.out.println("马家河子的人口"+peopleNumber);  
        }
}


类与对象的应用 实验任务1 定义矩形 ① 相关知识点 类是Java中最重要的数据类型,而类是用来创建具有属性和行为的对象。实用new标识符和类的构造方法为声明的对象分配变量,即创建对象。 ② 实验目的 本实验的目的是为了让学生掌握创建类,设置成员变量,成员方法等。 ③ 实验要求 已知矩形具有宽度和长度两个属性,并且具有获取其周长和面积的行为,现在将该矩形抽象为个Rectangle类,并假设该类具有的成员分别如下。 (1)成员变量: width //宽度 length //长度 (2)成员方法: float getWidth( ) //获取矩形宽度 float getLength( ) //获取矩形长度 float getPerimeter( ) //获取矩形周长 float getArea( ) //获取矩形面积 void setWidth(float w) //设置矩形宽度 void setLength(float l) //设置矩形长度 请根据以上描述的成员,定义Rectangle类,要求将成员变量设置成私有访问权限,成员方法都设置成公有访问权限。 实验任务2 机动车 ①相关知识点 类是用来抽象出类事物的有属性和行为,即抽象出数据以及在数据上所进行的操作。类的类替由部分组成,即变量的声明和方法的定义,其中的构造方法用于创建对象,其他方法供该类创建对象的调用。 ②实验目的 本实验的目的是让学生实用类来封装对象的属性和功能。 ③实验要求 编写Java应用程序,该程序中有两个类,即Vehicle(用于刻画机动车)和User(主类)。具体要求如下: (1)Vehicle类有个double类型的变量speed,用于刻画机动车的速度,有个int型变量power,用于刻画机动车的功率。在类中定义了speedUp(int s)方法,体现机动车有加速功能:定义了speedDown()方法,体现机动车有减速功能;定义了setPower(int p)方法,用于设置机动车的功率;定义了getPower()方法,用于获取机动车的功率。 (2)在主类User的main()方法中用Vehicle类创建对象,并让该对象调用方法设置功率,演示加速和减速功能。 ④程序运行效果 运行效果如图1-1所示。 图1-1 ⑤实验指导 在创建个对象时,成员变量被分配内存空间,这些内存空间称为该对象的实体或变量,而对象中存放着引用,以确保这些变量被该对象操作实用。 实验任务3 井水 ① 相关知识点 类有种基本的成员,即变量和方法,变量用来刻画对象的属性,方法用来体现对象的功能,即方法使用某种算法操作变量来实现个具体的行为(功能)。 成员变量用来刻画类创建的对象的属性,其中部分成员变量称作实例变量,另部分称作静态变量或类变量。类变量是与类相关联的数据变量,而实例变量是仅仅和对象相关联的数据变量。不同的对象的实例变量将被分配不同的内存空间,如果类中有类变量,那么所 有对象的这个类变量都分配给相同的处内存,改变其中个对象的这个类变量会影响其他对象的这个类变量。也就是说,对象享类变量。 方法是类体的重要成员之。其中,构造方法是具有特殊地位的方法,供类创建对象时使用,用来给出类所创建的对象的初始状态:另外些方法可分为实例方法和类方法,类所创建的对象可以调用这些方法形成定的算法,体现对象具有某种行为。个类的类方法也可以直接通过该类的类名调用。 当对象调用方法时,方法中出现的成员变量就是指分配给该对象的变量。类中的方法可以操作成员变量,当对象调用方法时,方法中出现的成员变量就是指分配给该对象的变量,其中的类变量和所有的其他对象享。实例方法可操作实例成员变量和静态成员变量,静态方法只能操作静态成员变量。 ② 实验目的 本实验的目的是让学生掌握类变量与实例变量,以及类方法与实例方法的区别。 ③ 实验要求 编写程序模拟两个村庄共用同一井水,编写个Village类,该类有个静态的int型成员变量waterAmount,用于模拟井水量。在主类Land的main()方法中创建两个村庄村庄改变了waterAmount的值,另村庄查看waterAmount的值。 ④ 程序模板 请按模板要求将【代码】替换为Java程序代码。 Village.java public class Village{ static int waterAmount; //模拟井的量 int peopleNumber; //村庄的人数 String name; //村庄的名字 Village(String s) { name = s; } static void setWaterAmount(int m) { if(m>0) waterAmount = m; } void drinkWater(int n){ if( waterAmount-n>=0) { waterAmount = waterAmount-n; System.out.println(name+"喝了"+n+"升"); } else waterAmount = 0; } static int lookWaterAmount() { return waterAmount; } void setPeopleNumber(int n) { peopleNumber = n; } int getPeopleNumber() { return peopleNumber; } } Land.java public class Land { public static void main(String args[]) { 【代码1】 //用类名调用setWaterAmount(int m),并向参数传值200 int leftWater =【代码2】 //用Village类的类名访问waterAmount System.out.println("井中有 "+leftWater+" 升"); Village zhaoZhuang,maJiaHeZi; zhaoZhuang = new Village("赵庄"); maJiaHeZi = new Village("马家河子"); zhaoZhuang.setPeopleNumber(80); maJiaHeZi.setPeopleNumber(120); 【代码3】//zhaoZhuang调用drinkWater(int n),并向参数传值50 leftWater = 【代码4】//maJiaHeZhi调用lookWaterAmount()方法 String name=maJiaHeZi.name; System.out.println(name+"发现井中有 "+leftWater+" 升"); maJiaHeZi.drinkWater(100); leftWater = 【代码5】//zhaoZhuang调用lookWaterAmount()方法 name=zhaoZhuang.name; System.out.println(name+"发现井中有 "+leftWater+" 升"); int peopleNumber = zhaoZhuang.getPeopleNumber(); System.out.println("赵庄的人口:"+peopleNumber); peopleNumber = maJiaHeZi.getPeopleNumber(); System.out.println("马家河子的人口:"+peopleNumber); } } ⑤ 运行效果 运行效果如图1-2所示。 图1-2 ⑥ 实验指导 (1)当Java程序执行时,类的字节码文件被加载到内存,如果该类没有创建对象,类的、实例变量不会被分配内存,但是类中的类变量在该类被加载到内存时就分配了相应的内存空间。如果该类创建对象,那么不同对象的实例变量互不相同,即分配不同的内存空间,而类变量不再重新分配内存,所有的对象享类变量。 (2)当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址,只有当该类创建对象后类中的实例方法才分配入口地址。当使用new标识符和构造方法创建对象时,首先分配成员变量给该对象,同时实例方法分配入口地址,然后再执行构造方法中的语句完成必要的初始化,因此实例方法必须由对象调用执行。需要注意的是,当创建第个对象时类中的实例方法就分配了入口地址,当再创建对象时不再分配入口地址,也就是说方法的入口地址被所有的对象享。对于类中的类方法,在该类被加载到内存时就分配了相应的入口地址,即使该类没有创建对象,也可以直接通过类名调用类方法(当然,类方法也可以通过对象调用)。
最新发布
10-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值