Java实验3类方法重载构造方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java实验3类方法重载构造方法相关的知识,希望对你有一定的参考价值。
实验目的: 掌握类和方法的定义,对象的创建和使用。掌握引用的概念和引用赋值。掌握方法重载,构造方法的作用及使用。掌握包的概念和使用。 |
|||
一、实验内容: 实验题目1-1 定义一个名为Rectangle的类表示矩形,其中含有length、width 两个double型的成员变量表示矩形的长和宽。编写一个RectDemo应用程序,在main()方法中创建一个矩形对象rt,通过访问成员变量的方式为两个成员变量赋值,计算并输出它的面积。 public class RecDemo { public static void main(String[] args) { double area; Rectangle rt=new Rectangle(); rt.length=10; rt.width=10; area=rt.length*rt.width; System.out.println("面积是"+area); } } class Rectangle{ double length; double width; double area; } 结果 面积是100.0 实验题目1-2 修改Rectangle类,为每个变量定义访问方法和修改方法,定义求矩形周长的方法perimeter()和求面积的方法area()。修改RectDemo应用程序,在main()方法中创建矩形对象后通过方法设置其长和宽,然后输出其周长和面积。 public class RecDemo { public static void main(String[] args) { Rectangle rt = new Rectangle(); rt.SetRec(11, 10); rt.perimeter(); rt.Area(); } } class Rectangle{ double length; double width; double area; double perimeter; void SetRec(double length,double width) { this.length=length; this.width=width; } double getlength() { return length; } double getwidth() { return width; } void perimeter(){ perimeter=length*2+width*2; System.out.println("周长是"+perimeter); } void Area(){ area=length*width; System.out.println("矩形面积是"+area); } } 结果 周长是42.0 矩形面积是110.0 实验题目1-3 为Rectangle类编写一个带参数的构造方法,通过用户给出的长、宽创建矩形对象,再编写一个默认的构造方法,在该方法中调用有参数的构造方法,将矩形的长宽分别设置为2和1。编写一个类测试这个矩形类。 public class RecDemo { public static void main(String[] args) { new Rectangle(); } } class Rectangle{ double length; double width; double area; double perimeter; Rectangle(double length,double width){ this.length=length; this.width=width; } Rectangle(){ Rectangle rt = new Rectangle(2,1); rt.Perimete(); rt.Area(); } void Area(){ area=length*width; System.out.println("面积是"+area); } void Perimete(){ perimeter=length*2+width*2; System.out.println("周长是"+perimeter); } } 结果 周长是6.0 面积是2.0 实验题目2-1 定义一个名为Box的类,该类有三个double类型的成员变量,分别为length, width和height,表示盒子的长、宽和高。编写一个应用程序BoxDemo,创建一个名为mybox 的Box对象,通过访问成员变量的方式为三个成员变量赋值,然后计算该盒子的体积并输出。 public class BoxDemo { public static void main(String[] args) { Box mybox = new Box(); double h=mybox.height=1; double l=mybox.length=2; double w=mybox.width=3; System.out.println("盒子的体积为:"+l*w*h); } } class Box{ double length; double width; double height; } 结果 盒子的体积为:6.0 实验题目2-2 修改Box类,为其成员变量定义修改方法和访问方法,再定义一个volume()方法用来求盒子的体积。用BoxDemo程序创建一个Box对象,测试这些方法的使用。 public class BoxDemo { public static void main(String[] args) { Box mybox = new Box(); mybox.setbox(3, 2, 3); mybox.getlength(); mybox.getheight(); mybox.getwidth(); mybox.volume(); } } class Box{ double length; double width; double height; void setbox(double length,double width,double height) { this.length=length; this.width=width; this.height=height; } double getlength() { return length; } double getwidth() { return width; } double getheight() { return height; } void volume() { double v; v=length*width*height; System.out.println("体积是:"+v); } } 结果 体积是:18.0 实验题目2-3 修改Box类,为该类定义一个带有三个double型参数的构造方法。假设该构造方法的声明格式为Box(double length, double width, double height){ },方法体应如何编写。然后在BoxDemo程序中创建一个长、宽、高分别为10,20,15的Box对象,输出该对象的体积。如果再用new Box()创建一个对象会怎样,为什么? 构造方法用来给成员变量赋初值,如果再一次实例化一个对象,调用该对象的volume方法后结果会改变,是当前传入参数值赋初值后,调用方法后输出的结果,是新的值。 public class BoxDemo { public static void main(String[] args) { Box myBox=new Box(3,4,5); myBox.Volume(); Box myBox2=new Box(1,2,3); myBox2.Volume(); } } class Box{ double length; double width; double height; public Box(double length,double width,double height){ this.length=length; this.width=width; this.height=height; } void Volume(){ System.out.println("体积为"+length*width*height); } } 结果 体积为60.0 体积为6.0 实验题目3-1 定义一个名为Point的类来模拟一个点,一个点可用x和y坐标描述。在定义的类中编写一个main()方法,完成下面操作。 声明两个Point变量,start和end,将start点的坐标设置为(10,10),将end点的坐标设置为(20,30)。 使用输出语句分别打印start和end对象的x和y值,代码如下: System.out.println("start.x="+start.x +", strat.y=" + start.y); System.out.println("end.x="+end.x +", end.y=" + end.y); public class Point { double x; double y; public static void main(String[] args) { Point start = new Point(); start.x=10; start.y=10; Point end = new Point(); end.x=20; end.y=30; System.out.println("start.x="+start.x+",start.y="+start.y); System.out.println("end.x="+end.x+",end.y="+end.y); }
} 结果 start.x=10.0,start.y=10.0 end.x=20.0,end.y=30.0 实验题目3-2 声明一个Point类型的名为stray的变量,将变量end的引用值赋予stray,然后打印end和stray变量的成员x和y的值。 public class Point { double x; double y; public static void main(String[] args) { Point end = new Point(); end.x=20; end.y=30; Point stray = new Point(); stray=end; System.out.println("end.x="+end.x+",end.y="+end.y); System.out.println("stray.x="+stray.x+",stray.y="+stray.y); }
} 结果 end.x=20.0,end.y=30.0 stray.x=20.0,stray.y=30.0 实验题目3-4 为stray变量的成员x和y指定新的值,然后打印end和stray的成员值。end的值反映了stray内的变化,表明两个变量都引用了同一个Point对象; public class Point { double x; double y; public static void main(String[] args) { Point end = new Point(); end.x=20; end.y=30; Point stray = new Point(); stray.x=10; stray.y=10; System.out.println("end.x="+end.x+",end.y="+end.y); System.out.println("stray.x="+stray.x+",stray.y="+stray.y); }
} 结果 end.x=20.0,end.y=30.0 stray.x=10.0,stray.y=10.0 实验题目3-5 为start变量的成员x和y指定新的值,然后打印start和end的成员值。再次编译并运行Point类,start的值仍然独立于stray和end的值,表明start变量仍然在引用一个Point对象,而这个对象与stray和end引用的对象是不同的。 public class Point { double x; double y; public static void main(String[] args) { Point start = new Point(); start.x=100; start.y=100; Point end = new Point(); end.x=20; end.y=30; System.out.println("start.x="+start.x+",start.y="+start.y); System.out.println("end.x="+end.x+",end.y="+end.y); Point stray = new Point(); stray.x=40; stray.y=40; System.out.println("stray.x="+stray.x+",stray.y="+stray.y); }
} 结果 start.x=100.0,start.y=100.0 end.x=20.0,end.y=30.0 stray.x=40.0,stray.y=40.0 实验题目4 设计一个银行账户类,其中包括: 账户信息:账号、姓名、开户时间、身份证号、账户余额等。 存款方法。 取款方法。 其他方法如“查询余额”和“显示账号”等。 编写应用程序模拟存款和取款过程。 package Mywork;
import java.util.Scanner;
public class app { public static void main(String[] args) { System.out.println("请输入选项"); int n; BankAccount ba = new BankAccount("12345678910","赵存档","2017-9-14","1111111"); Scanner input = new Scanner(System.in); n=input.nextInt(); switch(n){ case 1:System.out.println("1.存款");ba.SaveMoney(input.nextDouble());ba.leftMoeny(); case 2:System.out.println("2.取款");ba.getMoney(input.nextDouble());ba.leftMoeny(); case 3:System.out.println("3.显示信息");ba.show_id(); default:break; } } } class BankAccount{ String ba_id; String ba_name; String open_date; String p_id; double Money; BankAccount(String ba_id,String ba_name,String open_date,String p_id){ this.ba_id= ba_id; this.ba_name=ba_name; this.open_date=open_date; this.p_id=p_id; } void SaveMoney(double Money) {
this.Money=this.Money+Money; } double getMoney(double g_Moeny) { this.Money=this.Money-g_Moeny; return Money; } void leftMoeny() { System.out.println("余额"+this.Money); } void show_id() { System.out.println("账号是"+ba_id+"姓名是"+ba_name+"开户日期是"+open_date+"身份证号是"+p_id);
} } 结果 请输入选项 1 1.存款 112 余额112.0 2.取款 100 余额-100.0 3.显示账号 账号是12345678910 实验题目5 编写一个名为Input的类,该类属于com.tools包。使用该类实现各种数据类型(字符型除外)数据输入,其中的方法有readInt()、readDoube()、readString()等。在用户程序中通过调用Input.readDouble()即可从键盘上输入double型数据。例如,下面程序可以读入一个double型数据: import com.tools.Input; public class Test{ public static void main(String[] args){ double d = Input.readDouble(); System.out.println("d = "+d); } } 提示:使用java.util包中的Scanner类实现。 package com.tools; import java.util.Scanner; class Input{ static Scanner sc = new Scanner(System.in); public static int readInt(){ System.out.print("输入整形"); return sc.nextInt(); } public static float readFloat(){ System.out.print("输入浮点"); return sc.nextFloat(); } public static double readDouble(){ System.out.print("输入双精度"); return sc.nextDouble(); } } public class Test{ public static void main(String[] args){ double d1 = Input.readDouble(); System.out.println("d = "+d1); float d2 = Input.readFloat(); System.out.println("d = "+d2); int d3 = Input.readInt(); System.out.println("d ="+d3); } } 结果 输入双精度12.2 d = 12.2 输入浮点1.1 d = 1.1 输入整形1 d =1
二、在实验中遇到的问题、解决问题采用的方法: 构造方法是名字与类名相同,没有返回值,也不能返回void,创建对象时用new,构造方法主要是初始化变量以及对类实例化后赋初值。 方法重载是方法的名字与类名相同,参数类型和个数至少有一个不同。
|
|||
来源:http://www.cnblogs.com/xiaobo-Linux/ |
以上是关于Java实验3类方法重载构造方法的主要内容,如果未能解决你的问题,请参考以下文章