JAVA类和对象

实验目的:

1.掌握 Java 语言中类的定义、对象的创建、对象引用方法。

2.初步了解面向对象设计方法。

第一题:

设计一个自动铅笔类 AutoPencil,有 1 个属性 boolean penPoint(笔尖是否伸出),有

4 个函数:

(1)构造函数 AotoPencil(),将 penPoint 置为 false

(2)按压操作函数 void knock(),将 penPoint 置反

(3)获取笔尖状态函数 boollean getPenPoint()

(4)main 函数

创建对象并对实例对象进行按压操作,显示笔尖的状态。

源程序:

java 复制代码
public class test {
	private boolean penPoint;
	public test() {
		penPoint=false;
    }
public void knock() {
	penPoint=!penPoint;	
	}
	public Boolean getPenPoint() {
		return penPoint;
	}
	public static void main(String[] args) {
		test atPen=new test();
		System.out.println("笔尖状态:"+atPen.getPenPoint());
		atPen.knock();
System.out.println("笔尖状态:"+atPen.getPenPoint());
}
}

第二题:

设计一个汽车类 Car,有 2 个属性车主 owner 和油量 oil,有 7 个函数:

(1)构造函数 Car(String owner,double oil)

(2)构造函数 Car(String owner),油量置为 0

(3)加油操作函数 void addOil(double oil)

(4)行驶操作函数 void drive(int distance)

假设每 100 公里的耗油量为定值(自己设置),根据行驶的公里数更新油量。

(5)获得车主信息函数 String getOwner()

(6)获得油量函数 double getOil()

(7)main 函数

创建对象并对实例对象进行加油、行驶操作,显示车主、油量。

源程序:

java 复制代码
import java.util.Scanner;
public class car {
    private String owner;
    private double oil;
    public car(String owner,double oil){
        this.owner=owner;
        this.oil=oil;
    }
    public car(String owner){
        this.owner=owner;
        oil=0;
    }
    public void addOil(double oil) {
        this.oil=this.oil+oil;
    }
    public void drive(int distance) {
        oil=oil-10*distance;
    }
    public String getOwner() {
        return owner;
    }
    public double getOil() {
        return oil;
    }
     public static void main(String[] args) {
          car ok=new car("李木",10);
          car in=new car("陈锦云");
          System.out.println(ok.getOwner());
          System.out.println(ok.getOil());
          System.out.println(in.getOwner());
          System.out.println(in.getOil());
          in.addOil(80);
          System.out.println(in.getOwner()+"加油后有:"+in.getOil());
          in.drive(3);
          System.out.println(in.getOwner()+"行驶后有:"+in.getOil());
          }
}

第三题:

编写 Java 程序模拟简单的计算器。 定义名为 Number 的类,其中有两个私有的整型

数据成员 x 和 y。有 5 个函数:

(1)构造函数 Number(int x,int y)

(2)加法运算函数 int addition( )

(3)减法运算函数 int subtration( )

(4)乘法运算函数 int multiplication( )

(5)除法运算函数 int division( )

另外编写一个测试类,对 Number 类进行测试。

源程序:

java 复制代码
class Number{
	private int x,y;
	  Number(int x,int y){
		  this.x=x;
		  this.y=y;
	  }
	  public int addition(int x,int y) {
		  return x+y;
	  }
	  public int subtration(int x,int y) {
		  return x-y;
	  }
	  public int multiplication(int x,int y) {
		  return x*y;
	  }
	  public int division(int x,int y) {
		  return x/y;
	  }

}
public class test {

	public static void main(String[] args) {
		Number A=new Number(6,3);
		System.out.println("相加结果为:"+A.addition(6,3));
		System.out.println("相减结果为:"+A.subtration(6,3));
		System.out.println("相乘结果为:"+A.multiplication(6,3));
		System.out.println("相除结果为:"+A.division(6,3));
}
}

第四题:

定义长方形类 Rectangle,含:

(1)属性

Int width;

Int height;

(2)方法

Rectangle():宽、高默认值为 1;

Rectangle(int val):宽、高均为参数值;

Rectangle(int width,int height):

Int getSquare():计算面积;

int getPerimeter():计算周长;

另外编写测试类进行测试。

源程序:

java 复制代码
class Rectangle{
	int width;
	int height;
	Rectangle(){
		width=1;
		height=1;
	}
	Rectangle(int val){
		width=val;
		height=val;
	}
	Double getSquare() {
		return (double) (width*height);
	}
	Double getPerimeter() {
		return (double)(2*width+2*height);
	}
}
public class test {

	public static void main(String[] args) {
	Rectangle A=new Rectangle(16);
	System.out.println("面积为:"+A.getSquare());
	System.out.println("周长为:"+A.getPerimeter());
}
}

第五题:

定义一个时间类 MyTime,有三个属性 hour,minute,second。为 MyTime 类定义构

造方法,以便创建对象时初始化成员变量。除了构造函数外,还要创建以下方法:

(1)nextSecond( ):时间经过 1 秒

(2)nextMinute( ):时间经过 1 分

(3)nextHour( ):时间经过 1 小时

(4)prevSecond( ):前 1 秒

(5)prevMinute( ):前 1 分

(6)prevHour( ):前一小时

(7)display( ):以 HH:MM:SS 格式显示时间

另外编写测试类,进行测试

源程序:

java 复制代码
class mytime{
	private int hour,minute,second;
	mytime(int x,int y,int z){
		hour=x;
		minute=y;
		second=z;
	}
	public void nextSecond(){
		if(second!=0) {
			second=second+1;
		}else {
			minute=0;
			if(hour!=23) {
				hour=hour+1;
			}else {
				hour=0;
			}
		}
	}
	public void nextMinute(){
		if(minute!=0) {
			minute=minute+1;
		}else {
			minute=0;
			if(hour!=23) {
				hour=hour+1;
			}else {
				hour=0;
			}
		}
	}
	public void nextHour() {
		if(hour!=23) {
			hour+=1;
			}
		else {
			hour=0;
		}
	}
	public void preSecond() {
		if(second!=0) {
			second-=1;
		}
		else
		{
		second=59;
		if(minute!=0) {
			minute-=1;
		}
		else 
		{
			minute=59;
		}if(hour!=0) {
			hour-=1;
			}
	    else {
	    	hour=23;
		}
		}
	}
	public void prevMinute() {
		if(minute!=0) {
			minute-=1;
		}
		else 
		{ 
			minute=59;
		if(hour!=0) {
			hour-=1;
			}
	    else {
	    	hour=23;
		}
		}
	}
	public void prevHour() {
		if(hour!=0) {
			hour-=1;
		}
	    else {
	    	hour=23;
	    }
	}
	public void display(){
		System.out.println(hour+":"+minute+":"+second);
	}
}
public class test {

	public static void main(String[] args) {
		mytime a=new mytime(16,8,26);
		a.prevMinute();
		a.display();
		a.nextSecond();
		a.display();

	}
}

第六题:

编写程序使用复数类 Complex 验证两个复数 2+2i 和 3+3i 相加产生一个新的复数

5+5i 。复数类 Complex 满足如下要求:

(1)属性

Int realPart :复数的实部;

int imaginPart:复数的虚部;

(2)方法

Complex( ) : 构造方法,将复数的实部和虚部都置 0;

Complex( int r , int i ) :

Complex complexAdd (Complex a) : 将当前复数对象与形参复数对象相加,所得的结

果仍是一个复数值,返回给此方法的调用者。

String toString( ) : 把当前复数对象的实部、虚部组合成 a+bi 的字符串形式,其中

a 和 b 分别为实部和虚部的数据。

另外编写一个测试类 Test,对 Complex 类进行测试。

源程序:

java 复制代码
class Complex{
	int realPart;
	int imaginPart;
	Complex(){
		realPart=0;
		imaginPart=0;
	}
	Complex(int r,int i){
		realPart=r;
		imaginPart=i;
	}
	Complex complexAdd(Complex a) {
		realPart=realPart+a.realPart;
		imaginPart=imaginPart+a.imaginPart;
		return a;
	}
	public String toString() {
		return realPart+"+"+imaginPart+"i";
	}
}
public class test {

	public static void main(String[] args) {
  Complex A=new Complex(3,2);
  Complex B=new Complex(8,6);
  A.complexAdd(B);
  System.out.println("结果为:"+A.toString());
  
	}
}
相关推荐
Scott9999HH11 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔11 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社12 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海12 小时前
python 列表、元组、集合和字典
开发语言·python
萧瑟余晖13 小时前
JDK 26 新特性详解
java·开发语言
马优晨14 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
人邮异步社区16 小时前
怎么把C语言学到精通?
c语言·开发语言
心平气和量大福大16 小时前
C#-WPF-控件-TextBox 数据绑定
开发语言·c#·wpf
ttwuai16 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
维天说17 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json