当前位置: 首页 > news >正文

JAVA类和对象

实验目的:
1.掌握 Java 语言中类的定义、对象的创建、对象引用方法。
2.初步了解面向对象设计方法。

第一题:

设计一个自动铅笔类 AutoPencil,有 1 个属性 boolean penPoint(笔尖是否伸出),有
4 个函数:
(1)构造函数 AotoPencil(),将 penPoint 置为 false
(2)按压操作函数 void knock(),将 penPoint 置反
(3)获取笔尖状态函数 boollean getPenPoint()
(4)main 函数
创建对象并对实例对象进行按压操作,显示笔尖的状态。

源程序:

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 函数
创建对象并对实例对象进行加油、行驶操作,显示车主、油量。

源程序:

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 类进行测试。

源程序:

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():计算周长;
另外编写测试类进行测试。

源程序:

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 格式显示时间
另外编写测试类,进行测试

源程序:

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 类进行测试。

源程序:

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

相关文章:

  • 【电视软件】小飞电视v2.7.0 TV版-清爽无广告秒换台【永久更新】
  • I/O进程2
  • 【MySQL 数据库】数据库的操作
  • Quartz MisFire补偿机制 任务补偿 任务延迟 错过触发策略
  • 自然语言处理利器NLTK:从入门到核心功能解析
  • 【LeetCode 热题100】139:单词拆分(动态规划全解析+细节陷阱)(Go语言版)
  • 每日算法:洛谷U535982 J-A 小梦的AB交换
  • Java虚拟机——JVM(Java Virtual Machine)解析一
  • 113. 在 Vue 3 中使用 OpenLayers 实现鼠标移动显示坐标信息
  • php-cgi参数注入攻击经历浅谈
  • Redisson分布式锁:原理、使用
  • 第16届蓝桥杯单片机模拟试题Ⅰ
  • C和C++有什么区别?
  • 基于条码数据生成校验密码的C++实现方案
  • 课程分享 | 安全设计原则
  • 使用LangChain Agents构建Gradio及Gradio Tools(5)——gradio_tools的端到端示例详解
  • 【含文档+PPT+源码】基于Python的快递服务管理系统
  • MCU软件开发使用指针有哪些坑?
  • 基于 SmartX 原生容灾能力构建简单经济的容灾方案:5 大场景与 4 例实践合集
  • 【我赢职场】欣旺达电子股份在线测评解析
  • 梁山网站建设哪家便宜/企业推广
  • 网站建设部署与发布有效期/标题优化方法
  • 毕业设计做网站哪种好/给我免费播放片高清在线观看
  • 南京浦口做网站点/平台接广告在哪里接的
  • 湛江做网站的公司/今日头条官网
  • 建设一个商城网站需要多少钱/最新经济新闻