JAVA练习程序(六)对象和类(1)

这个代码示例展示了面向对象编程的概念,包括电视机类(TV)、学生类(Student)、矩形类(Rectangle)、股票类(Stock)和风扇类(Fan)。电视机类具有状态(频道、音量和电源)和动作(开关、调节频道和音量)。学生类有学号、姓名和年龄,并能学习。矩形类可以计算面积和周长。股票类包含股票代码、名称、前收盘价和当前价格,可以计算涨跌百分比。风扇类有速度、开关、半径和颜色,可以输出风扇的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.定义电视机TV类
每台电视机都是一个对象,每个对象都有状态(当前频道,当前音量,电源和开关)以及动作(转换频道,调节音量,开启/关闭),使用一个类对电视机进行建模并编写一个测试类来创建两个电视对象

package edu.uestc.avatar;

/**
 * TV这类事物的通用描述
 *
 */
public class TV {
	//tv的当前频道
	public int channel;
	//tv的当前音量
	public int volume;
	//这个tv是否开启
	public boolean on;
	
	/*
	 * 构造方法
	 * 1、必须和类名相同
	 * 2、没有返回值类型
	 * 3、使用new关键字创建对象实例时被调用。如果每个提供
	 */
	public TV(int c ,int v ,boolean o) {
		channel =c;
		volume = v;
		on = o;
	}
	public TV() {
		
	}	
	/**
	 * 开机
	 */
	public void turnOn() {
		on = true;
	}
	/**
	 * 关机
	 */
	public void turnOff() {
		on = false;
	}
	
	/**
	 * 给电视机设置一个新的频道
	 * @param newChannel
	 */
	public void setChannel(int newChannel) {
		if(on && newChannel >= 1 && newChannel <= 200) {
			channel = newChannel;
		}
	}
	
	/**
	 * 给电视机设置一个新的音量
	 * @param newVolume
	 */
	public void setVolume(int newVolume) {
		if(on && newVolume >= 0 && newVolume <= 20) {
			volume = newVolume;
		}
	}
	/**
	 * 当前频道+1
	 */
	public void channelUp() {
		if(on && channel < 200)
			channel++;
	}
	
	/**
	 * 当前频道-1
	 */
	public void channelDown() {
		if(on && channel > 1)
			channel--;
	}
	
	/**
	 * 当前音量+1
	 */
	public void volumeUp() {
		if(on && volume < 20)
			volume++;
	}
	
	/**
	 * 当前音量-1
	 */
	public void volumeDown() {
		if(on && volume > 1)
			volume--;
	}
}

package edu.uestc.avatar;

public class TVDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		TV TV1 = new TV(1,5,true);
		
		TV TV2 = new TV();
		TV2.channel = 2;
		TV2.volume = 6;
		TV2.on = false;
		
		TV1.setChannel(10);
		TV2.setVolume(12);
		TV1.channelDown();
		TV2.volumeUp();
		
		System.out.println("TV1: \n" + "channel: " + TV1.channel + "  volume: " + TV1.volume);
		System.out.println("TV2: \n" + "channel: " + TV2.channel + "  volume: " + TV2.volume);
	}

}

2.编写学生Student类 特征:学号,姓名,年龄 行为:学习
在这里插入图片描述

package edu.uestc.avatar;

import java.util.Scanner;

public class Student {
	public int number;
	public int age;
	public String name;
	
	public Student() {
	}
	
	public void studing() {
		Scanner input = new Scanner(System.in);
		System.out.println("请选择学习科目:\n1、语文   2、数学");
		int course = input.nextInt();
		if(course == 1) {
			System.out.printf("学号:%d  姓名:%s  年龄:%d  学习语文",number,name,age);
		}else if(course == 2) {
			System.out.printf("学号:%d  姓名%s  年龄%d  学习数学",number,name,age);
		}
	}
}

package edu.uestc.avatar;

public class StudentDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student student1 = new Student();
		student1.age= 21;
		student1.name="张三";
		student1.number = 111;
		
		student1.studing();
	}

}

3.设计一个名为Rectangle的类来表示矩形
特征:宽(width)高(height)
行为:计算矩形的面积;计算矩形的周长编写一个测试测序,创建一个Rectangle对象,设置其属性,显示其面积和周长
在这里插入图片描述

package edu.uestc.avatar;

public class Rectangle {
	public double width;
	public double height;
	
	public Rectangle() {
	}
	/**
	 * 计算矩形的面积
	 */
	public void getArea() {
		System.out.println("面积为:" + (width*height));
	}
	/**
	 * 计算矩形的周长
	 */
	public void getPerimeter() {
		System.out.println("周长为:" + (width+height)*2);
	}
}

package edu.uestc.avatar;

public class RectangleDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Rectangle rectangle = new Rectangle();
		rectangle.height = 2;
		rectangle.width = 3;
		
		rectangle.getArea();
		rectangle.getPerimeter();
	}

}

4.设计股票(Stock)类
一个名为symbol的字符串来表示股票代码
一个名为name的字符串表示股票名称
一个名为previousClosingPrice的double型数据域表示前一日的收盘价
一个名为currentPrice的double型数据域表示当前股票价格
一个名为getChangePrecent的方法返回股票的涨跌百分比
编写一个测试测序,创建一个Stock对象,设置其属性,显示市值变化百分比
在这里插入图片描述

package edu.uestc.avatar;

public class Stock {
	public String symbol; //股票代码
	public String name; //股票名称
	public double previousClosingPrice;  //前一日的收盘价
	public double currentPrice; //当前股票价格
	
	public Stock() {
	}
	/**
	 * 返回股票的涨跌百分比
	 */
	public double getChangePrecent() {
		return ((currentPrice-previousClosingPrice)/previousClosingPrice)*100;
	}
}

package edu.uestc.avatar;

public class StockDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Stock stock = new Stock();
		stock.symbol = "abc111";
		stock.name = "aaa";
		stock.previousClosingPrice = 100;
		stock.currentPrice = 115;
		
		System.out.println("涨跌百分比为:" + stock.getChangePrecent() + "%");
	}

}

5.设计一个名为Fan的类来表示一个风扇。
三个名为SLOW、MEDIUM和FAST而值为1,2,3的常量,表示风扇的速度
一个名为speed的int类型表示风扇的速度(默认值为SLOW)
一个名为on的boolean类型表示风扇是否打开(默认值为false)
一个名为radius的double类型表示风扇的半径(默认值为5)
一个名为color的String类型表示风扇颜色(默认值为blue)
一个名为toString()的方法返回描述风扇的字符串。如果风扇是打开的,那么该方法再一个 组合字符串中返回风扇的速度、颜色和半径;如果风扇没有打开,返回一个由“fan is off”和风扇颜色及半径组合的字符串。
编写一个测试测序,创建两个Fan对象,将第一个对象设置为最大速度,半径为10、颜色为yellow,状态为打开。将第二个对象设置为中等速度,半径为5、颜色为blue,状态为关闭。调用toString方法显示这些对象。
在这里插入图片描述

package edu.uestc.avatar;

public class Fan {
	final int SLOW = 1;
	final int MEDIUM = 2;
	final int FAST = 3;
	
	public int speed = SLOW; //风扇的速度
	public boolean on = false; //风扇是否打开
	public double radius = 5; //风扇的半径
	public String color = "blue"; //风扇颜色
	
	public Fan() {
	}
	
/**
 * 如果风扇是打开的,那么该方法再一个组合字符串中返回风扇的速度、颜色和半径;
 * 如果风扇没有打开,返回一个由“fan is off”和风扇颜色及半径组合的字符串。
 */
	public String toString() {
		if(on) {
			return ("风扇速度:" +  speed  + "\n风扇颜色:" + color + "\n风扇半径:" + radius);
		}
		else {
			return ("fan is off"  + "\n风扇颜色:" + color + "\n风扇半径:" + radius);
		}
	}
}

package edu.uestc.avatar;

public class FanDmoe {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Fan fan1 = new Fan();
		Fan fan2 = new Fan();	
		fan2.on = true;
		
		System.out.println(fan1.toString());
		System.out.println();
		System.out.println(fan2.toString());
	}
}

6.实现领养宠物功能
编写宠物类Dog和Penguin
创建宠物对象,输入宠物信息,最后输出
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

package edu.uestc.avatar;

public class Pets {
	public String name;
	public int species; //类型
	public int variety; //狗的品种
	public int sex; //企鹅的性别
	public int healthy = 100; //健康值
	public int intimacy = 0; //亲密度
	
	public Pets() {
	}
	/**
	 * 返回狗的信息
	 * @return
	 */
	public String Dog() {
		String type = null;
			if(variety == 1) {
				type ="我的类型是聪明的拉布拉多";
			}
			else {
				type ="我的类型是酷酷的雪纳瑞";
			}
		return ("我的名字叫" + name + ",我的健康值是" + healthy + ",我和主人的亲密度是" + intimacy +"," +  type );
	}
	/**
	 * 返回企鹅的信息
	 * @return
	 */
	public String Penguin() {
		String type = null;
			if(sex == 1) {
				type ="我的性别是Q仔";
			}
			else {
				type ="我的性别是Q妹";
			}
		return ("我的名字叫" + name + ",我的健康值是" + healthy + ",我和主人的亲密度是" + intimacy +"," + type );
	}
	
}

package edu.uestc.avatar;

import java.util.Scanner;

public class PetsDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Pets pet1 = new Pets();
		Pets pet2 = new Pets();
		
		Scanner input = new Scanner(System.in);
		System.out.println("欢迎来到宠物店");
		System.out.println("请输入要领养宠物的名字:");
		pet1.name = input.next();
		System.out.println("请选择要领养的宠物类型:(1、狗狗  2、企鹅)");
		pet1.species = input.nextInt();
		if(pet1.species == 1) {
			System.out.println("请选择狗的品种:(1、聪明的拉布拉多  2、酷酷的雪纳瑞)");
			pet1.variety = input.nextInt();
			System.out.println(pet1.Dog());
		}
		else {
			System.out.println("请选择企鹅的性别:(1、Q仔  2、Q妹)");
			pet1.sex = input.nextInt();
			System.out.println(pet1.Penguin());
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值