JAVA范例 八)面向对象---类、成员变量和方法

  

    类

  实例148 简单的通讯录类

package Chapter08.Class;
public class ClassDemo_01 {
	// 以下是该类的成员变量的声明
	String name;		// 姓名
	String phoneNum;	// 联系电话
	String email;		// E-mail
	String address;		// 家庭住址
	// 利用该类的构造方法为其成员变量赋值
	public ClassDemo_01(String name, String phoneNum, String email,
			String address) {
		this.name = name;
		this.phoneNum = phoneNum;
		this.email = email;
		this.address = address;
	}
	// 定义该类的方法
	public void printMessage() {
		System.out.println("姓名:   " + name);
		System.out.println("联系电话:  " + phoneNum);
		System.out.println("电子邮箱地址:" + email);
		System.out.println("目前居住地址:" + address);
	}
	public static void main(String[] args) {
		// 用关键字new创建该类的实例化对象,为成员变量赋值
		ClassDemo_01 cd = new ClassDemo_01("张三", "13811111111",
				"zhangsan@xx.com", "北京昌平区");
		// 调用方法
		cd.printMessage();
	}
}

 

  实例149 简单的长度单位转换类

package Chapter08.Class;
public class length {
	double num;			// 数值
	String units;			// 单位
	String targetUnits;		// 目标单位
	double result = 0;		// 最后换算的结果
	String str = "";
	// 英寸:inch 英尺:feet 米:meter 厘米:cm
	public static void main(String[] args) {
		System.out.println("长度单位之间的换数如下:");
		// 创建类对象
		length cd = new length(3, "米", "厘米");
		length cd1 = new length(8, "米", "英尺");
		length cd2 = new length(8945.56, "厘米", "米");
		length cd3 = new length(12.5, "英尺", "米");
		length cd4 = new length(12.2, "英寸", "厘米");
		length cd5 = new length(45.96, "厘米", "英寸");
		length cd6 = new length(14.5, "英尺", "英寸");
		length cd7 = new length(30.2, "英寸", "英尺");
		// 调用方法并打印出相应的结果
		System.out.println(cd.unitConversion());
		System.out.println(cd1.unitConversion());
		System.out.println(cd2.unitConversion());
		System.out.println(cd3.unitConversion());
		System.out.println(cd4.unitConversion());
		System.out.println(cd5.unitConversion());
		System.out.println(cd6.unitConversion());
		System.out.println(cd7.unitConversion());
	}
	// 利用构造方法为成员变量赋值
	public length (double num, String units, String targetUnits) {
		this.num = num;
		this.targetUnits = targetUnits;
		this.units = units;
	}
	// 进行各长度单位之间的换算
	public String unitConversion() {
		if (targetUnits.equals("英寸") && units.equals("厘米")) {		// 厘米->英寸
			result = num * (1 / 2.54);
			str = num + "厘米 = " + result + "英寸";
		} else if (targetUnits.equals("厘米") && units.equals("英寸")) {	// 英寸->厘米
			result = num * 2.54;
			str = num + "英寸 = " + result + "厘米";
		} else if (targetUnits.equals("厘米") && units.equals("米")) {	// 米-> 厘米
			result = num * 100;
			str = num + "米 = " + result + "厘米";
		} else if (targetUnits.equals("米") && units.equals("厘米")) {	// 厘米-> 米
			result = num * (1 / 100.0);
			str = num + "厘米 = " + result + "米";
		} else if (targetUnits.equals("英尺") && units.equals("英寸")) {	// 英寸-> 英尺
			result = num * (1 / 12.0);
			str = num + "英寸 = " + result + "英尺";
		} else if (targetUnits.equals("英寸") && units.equals("英尺")) {	// 英尺-> 英寸
			result = num * 12;
			str = num + "英尺 = " + result + "英寸";
		} else if (targetUnits.equals("英尺") && units.equals("米")) {	// 米-> 英尺
			result = num * 3.2809;
			str = num + "米 = " + result + "英尺";
		} else if (targetUnits.equals("米") && units.equals("英尺")) {	// 英尺-> 米
			result = num * (1 / 3.2809);
			str = num + "英尺 = " + result + "米";
		}
		return str;
	}
}

 

  实例150 卡车和卡车司机之间的关系

package Chapter08.Class;
public class TruckDrivers {
	public String name; 			// 定义司机的名字
	// TruckDrivers 类构造函数
	public TruckDrivers(String name) {
		this.name = name;
	}
	// TruckDrivers 类对象的drive方法
	public void drive(int num) {
		Truck truck = new Truck(); // 生成Truck类的对象truck
		truck.speed(num); 		// 调用truck对象所固有的driveAt()方法
	}
	public static void main(String args[]) {
		// 生成TruckDrivers类的对象td
		TruckDrivers td = new TruckDrivers("张三 ");
		System.out.print(td.name);
		td.drive(80); 			// 调用td对象所固有的drive()方法
		System.out.println();
		// 生成TruckDrivers类的对象td1
		TruckDrivers td1 = new TruckDrivers("李四 ");
		System.out.print(td1.name);
		td1.drive(30); 			// 调用td1对象所固有的drive()方法
	}
}
class Truck {
	// Truck类的属性即成员变量
	public int wheelNum;			// 车轮的数量
	public int weight;			// 车的重量
	public int driveSpeed;		// 行车的速度
	// Truck 类构造函数,设定初始值
	public Truck() {
		wheelNum = 4;
		weight = 1;
	}
	// 表示卡车行驶速度的方法
	public void speed(int speed) {
		if (speed >= 60) {
			System.out.println("超速行驶,容易造成交通事 故");
			// 如果车速太快,则自动以40迈的速度行驶
			driveSpeed = 40;
		} else {
			System.out.println("在安全行驶速度内行驶");
			driveSpeed = speed;
		}
	}
}

 

  实例151 双色球

package Chapter08.Loans;

import java.util.StringTokenizer;

//所购买的彩票号码
public class Loans {
	int buyer[] = new int[7];//创建一个int型数组,用于存放选好的7个双色球号码
	int level = 0;//标志中奖的等级
	int num = 0;//标志选好的单个号码
	void getLoans() {//获取选好的七个号码
		System.out.println("请输入您购买的7个彩票号码,并以空格隔开:");
		StringTokenizer src = new StringTokenizer(ChooseNumbers.entry(), " ");//将字符串以空格的形工式分解开
		int i = 0;
		while (src.hasMoreTokens()) {
			num = Integer.parseInt(src.nextToken());
			if (i < 6) {//判断前6个号码是否符合红球的选号范围内
				if (num < 0 || num > 33) {
					System.out.println("红球号码录入有误,红球号码必须在1~33之间选取");
					break;
				}
			} else if (i == 6) {//判断最后一个号码是否符合蓝球的选号范围内
				if (num < 0 || num > 16) {
					System.out.println("蓝球号码录入有误,蓝球号码必须在1~16之间选取");
					break;
				}
			}
			buyer[i] = num;
			i++;
		}
	}
	void print() {
		for (int i = 0; i < 7; i++) {
			System.out.print(buyer[i] + " ");
		}
		System.out.println();
	}
}

 

package Chapter08.Loans;

import java.util.Vector;

//彩票投注站也就是售彩票的地方
public class Lottery {
	Vector v = new Vector();
	int winnum[] = new int[7];//定义一个int型数组用来存储中奖的号码
	void sellLoans()// 卖彩票给彩民
	{
		while (true) {
			Buyer cm = new Buyer();
			cm.buyLoans();
			v.add(cm);
			System.out.println("是否还有彩民需要购买?[0:退出]");
			int cmd = ChooseNumbers.getInt();
			if (cmd == 0)
				break;
		}
	}
	void showLoans()// 公布中奖号码
	{
		System.out.println("公布本期的中奖号码为:");
		for (int i = 0; i < winnum.length; i++) {
			winnum[i] = (int) (Math.random() * 35 + 1);
			for (int j = 0; j < i; j++) {
				if (winnum[i] == winnum[j])
					i--;
			}
			System.out.print(winnum[i] + " ");
		}
		System.out.println();
	}
	void totalInfo()// 统计中奖情况
	{
		for (int i = 0; i < v.size(); i++) {
			Buyer cm = (Buyer) v.get(i);
			totalBuyer(cm);
		}
	}
	void totalBuyer(Buyer cm)// 统计一个彩民的中奖情况
	{
		for (int i = 0; i < cm.v.size(); i++) {
			Loans loa = (Loans) cm.v.get(i);
			totalLoans(loa);
		}
	}
	void totalLoans(Loans loa)// 统计一批彩票的中奖情况
	{
		for (int i = 0; i < 7; i++)
			for (int j = 0; j < 7; j++)
				if (loa.buyer[i] == winnum[j]) {
					loa.level++;
					break;
				}
	}
	void prize()// 兑换奖品
	{
		for (int i = 0; i < v.size(); i++) {
			Buyer cm = (Buyer) v.get(i);
			winner(cm);
		}
	}
	void winner(Buyer cm)// 中奖的人
	{
		System.out.println("彩民[" + cm.order + "]:");
		for (int i = 0; i < cm.v.size(); i++) {
			Loans loa = (Loans) cm.v.get(i);
			prizeMoney(loa);
		}
	}
	void prizeMoney(Loans loa)// 中奖的金额
	{
		switch (loa.level) {
		case 6:
			System.out.println("恭喜您中了一等奖,中奖金额为500万元!");
			break;
		case 5:
			System.out.println("恭喜您中了二等奖,单注奖金额为63万元!");
			break;
		case 4:
			System.out.println("恭喜您中了三等奖,单注奖金额为3000元!");
			break;
		case 3:
			System.out.println("恭喜您中了四等奖,单注奖金额为200元!");
			break;
		case 2:
			System.out.println("恭喜您中了五等奖,单注奖金额为10元!");
			break;
		case 1:
			System.out.println("恭喜您中了六等奖,单注奖金额为5元!");
			break;
		default:
			System.out.println("谢谢您的参与,祝您下次好运!");
			break;
		}
	}
}

 

package Chapter08.Loans;

import java.io.BufferedReader;
import java.io.InputStreamReader;

//选取号码
public class ChooseNumbers {
	public static String entry() {
		String str = "";
		try {
			BufferedReader buf = new BufferedReader(new InputStreamReader(
					System.in));// 创建BufferedReader缓存字符输入流
			str = buf.readLine();// 从键盘上读取一行数据
		} catch (Exception e) {
		}
		return str;
	}
	public static int getInt()// 从键盘上录入一个整型数据
	{
		int temp = 0;
		while (true) {
			try {
				temp = Integer.parseInt(entry()); // 将字符串转换成int型
				break;
			} catch (Exception e) {
				System.out.println("请输入一个整数:" + e.getMessage());
			}
		}
		return temp;
	}
}

 

package Chapter08.Loans;
//测试类
public class TestCase {
	public static void main(String[] args) {
		Lottery lot = new Lottery();	// 创建一个Lottery类
		lot.sellLoans();			// 调用Lottery类的sellLoans方法,其主要作用是将彩票卖给购彩的人们
		lot.showLoans();		// 调用Lottery类的showLoans方法,其主要作用公布该期的中奖号码
		lot.totalInfo();			// 调用Lottery类的totalInfo方法,其主要作用是统计中奖的情况
		lot.prize();				// 调用Lottery类的prize方法,其主要作用是中奖人到彩票投注站去兑换奖金
	}
}

 

 

  8.2 成员变量和方法

  实例152 使用类作为成员变量

package Chapter08.Class;
public class ClassDemo_04 {
	public static void main(String[] args) {
		new Friends();// 创建Friends类的对象
	}
}
class Friends {
	// 定义类变量
	ClassDemo_01 girl;
	ClassDemo_01 boy;
	public Friends() {// 利用构造方法为类变量赋值
		String gname = "Anni";
		System.out.println("My Girlfriend's name is : " + gname);
		String gphoneNum = "13545681233";
		System.out.println("My Girlfriend's name is : " + gphoneNum);
		String gemail = "Anni129@sina.com";
		System.out.println("My Girlfriend's name is : " + gemail);
		String gaddress = "英国伦墩";
		System.out.println("My Girlfriend's name is : " + gaddress);
		System.out.println("创建并实例化ClassDemo_01对象girl");
		girl = new ClassDemo_01(gname, gphoneNum, gemail, gaddress);// 创建并实例化类变量
		girl.printMessage();// 调用该类变量的方法
		System.out.println();
		String bname = "Tom";
		System.out.println("My Boyfriend's name is : " + bname);
		String bphoneNum = "13255638897";
		System.out.println("My Boyfriend's name is : " + bphoneNum);
		String bemail = "Tomgood@vip.com";
		System.out.println("My Boyfriend's name is : " + bemail);
		String baddress = "美国洛杉矶";
		System.out.println("My Boyfriend's name is : " + baddress);
		System.out.println("创建并实例化ClassDemo_01对象boy");// 创建并实例化类变量
		boy = new ClassDemo_01(bname, bphoneNum, bemail, baddress);// 调用该类变量的方法
		boy.printMessage();
	}
}

 

  实例153 构造方法

package Chapter08.Class;
public class ClassDemo_05 {
	public static void main(String[] args) {
		System.out.println("使用第一个构造方法创建的人类的信息如下:");
		Person p = new Person();		// 使用无参的构造方法创建Person对象
		p.info();					// 调用Person类的info方法
		System.out.println("使用第二个构造方法创建的人类的信息如下:");
		Person p1 = new Person(p);	// 使用将对象作为参数的构造方法创建Person对象
		p1.info();					// 调用Person类的info方法
		System.out.println("使用第三个构造方法创建的人类的信息如下:");
		Person p2 = new Person("张小红", '女', 13);// 使用指定值为参数的构造方法创建Person对象
		p2.info();					// 调用Person类的info方法
	}
}
class Person {
	// 声明人类的三个基本属性
	public String name;	// 姓名
	public char sex;		// 性别
	public int age;		// 年龄
	// 设置默认值
	Person() {
		name = "张三";
		sex = '男';
		age = 35;
	}
	// 对象作为构造函数的参数
	Person(Person p) {
		name = p.name;
		sex = p.sex;
		age = p.age;
	}
	// 指定值初始化对象
	Person(String name, char sex, int age) {
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	// 输出person的基本信息
	public void info() {
		System.out.println("姓名:" + name + " 性别:" + sex + " 年龄:" + age);
	}
}

 

  实例154 使用静态成员变量计算内存中实例化的对象数目

package Chapter08.Class;

import java.util.Random;

public class ClassDemo_03 {
	public static void main(String[] args) {
		System.out.println("本程序的运行结果如下:");
		String str = ClassDemo_03.getMessage();		// 调用getMessage方法
		ObjectNum on = null;					// 声明ObjectNum对象
		while (!str.equals("X")) {
			if (str.equals("C")) {					// 如果str等于C则创建ObjectNum对象
				on = new ObjectNum();
			} else if (str.equals("D")) {				// 如果str等于D则消毁ObjectNum对象
				System.gc();
			}
			str = ClassDemo_03.getMessage();
		}
	}
	public static String getMessage() {
		Random rd = new Random();				// 创建Random对象,用于生成随机数
		int num = (65 + rd.nextInt(25));				// 生成随机数的范围为65~90之间
		char ch = (char) num;					// 将int型数据转换成char型
		return ch + "";
	}
}
class ObjectNum {
	public static int count = 0;
	public ObjectNum() {				// 构造方法
		count++;
		System.out.println("创建对象:object" + count);
	}
	public void finalize() {			// finalize方法专门用于垃圾回收
		System.out.println("消毁对象:object" + count);
		count--;
	}
}

 

  实例155 实现加减乘除的方法

public class Excer{
	public static void main(String args[])
	{
		Excer ex=new Excer();
		int x=0;
		int y=0;
		ex.math(x,y);
	}
	void math(int x,int y){
		MyMath mm = new MyMath();
		System.out.println("x="+x+" ,y="+y);
		System.out.println("x+y="+mm.plus(x,y));
		System.out.println("x-y="+mm.minus(x,y));
		System.out.println("x*y="+mm.multi(x,y));
		System.out.println("x/y="+mm.div(x,y));
				}
	}
class MyMath
{
	int plus(int a,int b)
	{
		return(a+b);
	}			
	int minus(int a,int b)
	{
		return(a-b);
	}
	int multi(int a,int b)
	{
		return(a*b);
	}
	float div(int a,int b)
	{
		return ((float)a/b);
	}
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值