`

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 2面向对象程序设计(随书范例程序)4-6.rar_面向对象

    面向对象编程(Object-Oriented Programming,简称OOP)是Java语言的核心特性,它通过类和对象的概念,实现了代码的封装、继承和多态性,极大地提高了软件开发的效率和可维护性。在这个名为"JAVA 2面向对象程序设计...

    Java范例大全 源码

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

    Java范例开发大全代码

    2. **面向对象编程**:类和对象的概念,构造函数,封装,继承(单一继承与接口的多重继承),多态(抽象类和接口)。 3. **异常处理**:Java中的try-catch-finally结构,自定义异常,以及如何有效地处理运行时错误...

    Java灵感编程范例源代码81-101

    2. **面向对象编程**:Java是一种强类型、面向对象的语言,示例可能展示如何设计和实现类、对象,以及如何利用继承、封装和多态性来构造复杂的软件系统。 3. **集合框架**:Java的集合框架是其强大功能的一部分,...

    Java灵感编程范例源代码1-20

    1. **面向对象编程(OOP)**:Java的核心是其面向对象的设计,包括类、对象、封装、继承和多态性。这些示例可能涵盖创建类、实例化对象以及理解类与对象之间的关系。 2. **基础语法**:Java的基础语法包括变量声明...

    《java范例大全》源代码

    《Java范例大全》源代码是一份非常宝贵的资源,它包含了大量的Java编程示例,旨在帮助开发者深入理解和掌握Java语言的各种特性和用法。这份源代码不仅覆盖了基础语法,还包括了面向对象编程、异常处理、集合框架、多...

    Java范例程序.rar_Java范例

    【Java范例程序.rar_Java范例】是一个包含基础Java编程示例的压缩包,适合初学者或希望巩固基础知识的开发者。这个压缩包中的资源旨在帮助用户理解和掌握Java语言的关键概念,通过实际代码来演示如何编写和运行Java...

    java 范例大全源代码

    在"Java 范例大全源代码"中,你可能会看到各种基础示例,包括变量、数据类型、运算符、流程控制(如if语句、for循环、while循环)以及方法的使用。这些基础知识点构成了Java编程的基础,是每个Java开发者必须掌握的...

    java开发范例大全

    2. **面向对象编程**:Java是一种面向对象的语言,范例可能包含类的创建、对象的实例化、封装、继承和多态等概念。学习如何设计类,理解类与对象的关系,以及如何利用继承和多态性提高代码的复用性和灵活性,这些都...

    java范例开发大全

    3. **类与对象**:深入讨论面向对象编程的核心概念,如类的定义、对象的创建、封装、继承、多态等。 4. **异常处理**:介绍了Java的异常处理机制,包括try-catch-finally语句块和自定义异常。 其次,书中进一步涵盖...

    孙卫琴《Java面向对象编程》配套PPT及书中源码

    《孙卫琴《Java面向对象编程》配套PPT及书中源码》是一个针对Java编程初学者和进阶者的宝贵资源,由知名Java教育专家孙卫琴编著。这个压缩包包含两部分:java_ppt.rar 和 sourcecode.rar,分别对应于教学PPT和书中的...

    Java通用范例开发金典

    2. **面向对象**:Java是一种纯面向对象的语言,重点在于类的定义、对象的创建和操作,以及封装、继承和多态三大特性。源码中可能包含了各种类的设计和对象的交互示例。 3. **异常处理**:Java的异常处理机制允许...

    java范例大全

    - 封装:通过访问修饰符控制成员变量和方法的访问范围。 - 继承:一个类继承另一个类,获得其属性和方法。 - 多态:接口实现、抽象类与子类之间的多态性表现。 - 接口:定义接口,实现接口,接口间的继承。 3. ...

    JAVA 范例开发大全 源代码

    2. **面向对象**:类、对象、封装、继承、多态等概念,以及如何使用接口、抽象类来实现设计模式。 3. **异常处理**:了解何时使用try-catch-finally语句块,以及自定义异常的创建和使用。 4. **集合框架**:...

    JAVA经典教材笔记

    - Java作为一种广泛使用的编程语言,其学习路径包括掌握基本语法、理解面向对象编程思想、熟悉标准库使用等。 - **JAVA发展概述** - Java的发展历程:从1995年由Sun Microsystems公司发布以来,Java经历了多次重大...

    Java通用范例 开发金典

    2. **面向对象编程**:Java是一种面向对象的语言,范例可能涵盖类、对象、封装、继承、多态等概念,帮助读者理解和应用面向对象设计原则。 3. **异常处理**:Java提供了强大的异常处理机制,源代码可能包含try-...

    第4章_JAVA之常量与变量.ppt

    在编程语言中,Java 是一种广泛使用的面向对象的语言,它有着严格的语法规范。本章将深入探讨 Java 中的两个基本概念:常量和变量。它们是编程中最常用的元素,理解和熟练掌握它们对于编写高质量的 Java 代码至关...

    Java通用范例开发金典配套源代码

    - **类的定义方法**:在Java中,类是面向对象编程的基础,用于封装数据和方法。通过`class`关键字定义一个类,例如范例1-1展示了如何创建类对象并进行复制。 - **对象复制**:Java中,通过`clone()`函数可以实现...

    JAVA范例开发大全

    首先,Java作为一种面向对象的语言,其核心概念包括类、对象、封装、继承和多态。在学习本书时,你需要理解类是对象的模板,对象则是类的实例。封装是将数据和操作数据的方法绑定在一起,以保护数据的安全性。继承则...

    JAVA程序设计范例

    在"JAVA程序设计范例"中,可能会包含关于类的继承、封装和多态性的示例,这些都是面向对象编程的重要概念。 再者,Java支持多种控制结构,如条件语句(if-else)、循环(for, while, do-while)和异常处理(try-...

Global site tag (gtag.js) - Google Analytics