`

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);
	}
}

 

 

分享到:
评论

相关推荐

    Java范例大全 源码

    首先,全书以Java开发环境搭建开篇,循序渐进地介绍了Java语法的方方面面,不仅包括变量、语句、字符串、数组、类、集合、面向对象等必备的基础语法,而且还涵盖异常处理与反射机制、I/O文件操作、线程、数据库操作...

    java范例开发大全(pdf&源码)

    8.2 成员变量和方法 236 实例152 使用类作为成员变量 236 实例153 构造方法 237 实例154 使用静态成员变量计算内存中实例化的对象数目 239 实例155 实现加减乘除的方法 240 8.3 面向对象的设计模式 241 实例156 ...

    JAVA 范例大全 光盘 资源

    第5章 面向对象设计 54 实例21 图形面积与周长(抽象类) 54 实例22 宠物结婚(封装) 56 实例23 一个盒子(继承) 58 实例24 学生的生活(多态) 60 实例25 员工薪资(接口) 62 实例26 我的类型(instanceof...

    java范例开发大全源代码

     8.2 成员变量和方法 236  实例152 使用类作为成员变量 236  实例153 构造方法 237  实例154 使用静态成员变量计算内存中实例化的对象数目 239  实例155 实现加减乘除的方法 240  8.3 面向对象的...

    java范例开发大全

    8.2 成员变量和方法 236 实例152 使用类作为成员变量 236 实例153 构造方法 237 实例154 使用静态成员变量计算内存中实例化的对象数目 239 实例155 实现加减乘除的方法 240 8.3 面向对象的设计模式 241 实例156 ...

    Java范例开发大全 (源程序)

     8.2 成员变量和方法 236  实例152 使用类作为成员变量 236  实例153 构造方法 237  实例154 使用静态成员变量计算内存中实例化的对象数目 239  实例155 实现加减乘除的方法 240  8.3 面向对象的设计模式...

    Java范例开发大全(全书源程序)

    Java范例开发大全(全书源程序),目录如下: 第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境...

    《Java程序设计》教学活动设计.doc

    Delivery content: java是完全的面向对象程序设计语言,每个java程序都是类构成的。理解 java是完全面向对象程序设计语言的含义,即java语言与c++语言的区别 。 5. 在讲解javaApplet之后,引出包的概念,即是分类...

    Formacao_Java_Orientado_a_Objetos:Java培训和面向对象

    :sparkles: 它涵盖从基本语言资源(例如变量,流控制和重复循环)到面向对象范例的主要概念(例如类,继承,“接口”和异常)以及它们如何在日常编程中提供帮助。 :laptop: Java的一大优势是其广泛的多平台标准库...

    Java语言的科学与艺术 斯坦福大学经典教材

     第1章 前言 1.1 计算简史 1.2 计算机科学的含义 1.3 计算机硬件简介 1.4 算法 1.5 编程过程的几个阶段 1.6 Java和面向对象范例 1.7 Java和WWW   1.8 小结 1.9 复习题 第2章 编程示例 2.1 “Hello world”程序 ...

    Java语言的科学与艺术(国外计算机科学经典教材)

     1.6 Java和面向对象范例  1.7 Java和WWW  1.8 小结  1.9 复习题 第2章 编程示例  2.1 “Hello world”程序  2.2 编程过程的观点  2.3 两数相加的程序  2.4 编程习语和模式  2.5 类和对象  2.6 图形程序 ...

    Java典型应用彻查1000例 Java入门

    本书是系列的第一本,从面向对象的概念开始讨论,循序渐进地介绍系统安装、基本架构与元素、变量声明、关系式、流程控制、对象概念、方法、程序设计、异常处理、输入输出流、线程、网络连接等知识点,并以相应范例的...

    Java-Programming-I:赫尔辛基大学的Java编程I

    与课程相关的信息可以在这里找到: ⠀部分⠀ 内容第1部分打印,读取输入,变量,使用数字计算,条件语句和运算第2部分反复出现的问题和解决方案,循环,方法第三部分列表,数组,字符串第4部分面向对象的编程,列表...

    JavaScript基础和实例代码

    2.2.2 八进制和十六进制 2.3 变量 2.3.1 变量标识符 2.3.2 变量申明 2.3.3 变量作用域 2.4 弱类型 2.5 基本数据类型 2.5.1 Number型 2.5.2 String型 2.5.3 Boolean型 2.5.4 Undefined型 2.5.5 Null型 2.5.6 Function...

    oes:对象事件模拟(OES)是一种离散事件模拟范例,将面向对象的建模与事件调度的模拟方法结合在一起

    用于对象事件模拟的核心模拟器该项目提供了用于对象事件模拟(OES)的各种模拟器(或模拟引擎),这是一种离散事件模拟范例,将面向对象的建模与事件调度的模拟方法相结合。 为简单起见,所有这些模拟器都具有简约的...

    PHP类的使用 实例代码讲解

    对不习惯使用 C++、Java、Delphi 等面向对象语言来开发程序的用户,不妨先阅读一下有关面向对象概念的书,相信可以带来许多的收获。 下面的范例是手推车类。可以看到,使用 class 表示它是一个类类别。在类别中的 ...

    Python核心编程第二版(ok)

     1.3.2 面向对象   1.3.3 可升级   1.3.4 可扩展   1.3.5 可移植性   1.3.6 易学   1.3.7 易读   1.3.8 易维护   1.3.9 健壮性   1.3.10 高效的快速原型开发工具   1.3.11 内存管理器...

    Python核心编程第二版

     1.3.2 面向对象   1.3.3 可升级   1.3.4 可扩展   1.3.5 可移植性   1.3.6 易学   1.3.7 易读   1.3.8 易维护   1.3.9 健壮性   1.3.10 高效的快速原型开发工具   1.3.11 内存管理器...

    Java/JavaEE 学习笔记

    第五章 对象和类(OO思想).........53 第六章 高级语言特性........................59 第七章 异常.............74 第八章 图形用户接口:GUI.............78 第十一章 事件处理模型....................79 第十三...

    asp.net知识库

    C#静态成员和方法的学习小结 C#中结构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件...

Global site tag (gtag.js) - Google Analytics