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/

时间: 2024-08-05 23:39:47

Java实验3类方法重载构造方法的相关文章

1.28 Java基础总结 ①方法重载②构造方法

1.28 Java基础总结 ①方法重载②构造方法 一.方法的重载在同一个类中,方法名相同,形参列表不同访问修饰符.返回类型和是否重载无关:按顺序对应的形参列表类型不同即可 二.构造器在类创建一个实例时被调用,构造方法只能用new关键字调用目的:初始化实例,初始化类属性(0,0.0,null,false)无返回值,和类名一致,用来构造对象作用:为对象分配内存, 创建并初始化成员变量(通过类创建,所以可以在static方法中调用构造方法) 返回引用,引用.属性:引用.方法(所以无返回值) 三.构造方

Java ——对象 类 方法重载 构造方法 封装

本节重点思维导图 快捷键 生成代码:alt+shift+s 提取变量:alt+shift+L 快速复制行:alt+ctrl+向上或向下的箭头 删除行:ctrl+d 类:对同一种事物共同属性和行为的抽象 对象:根据类创建出来的具体的实物 方法重载 在同一个类中提供多个同名不同参的方法. 重载要求:方法名称相同,但参数的   [ 类型不同     or   参数的个数不同     or     参数的顺序不同] public class Demo { public void fun1() { } p

Java实验四和实验五

实验四 类的继承性和多态性 [开发语言及实现平台或实验环境] Windows2000 或XP,JDK1.6与Jcreator4.0 [实验目的] 1.  掌握OOP方式进行程序设计的方法, 2.  了解类的继承性和多态性的作用. [实验要求] 1.  编写体现类的继承性(成员变量,成员方法,成员变量隐藏)的程序. 2.  编写体现类多态性(成员方法重载,构造方法重载)的程序. [实验内容] 一 类的继承性练习 1. 进一步理解继承的含义 新类可从现有的类中产生,并保留现有类的成员变量和方法并可根

JAVA SE中方法重载和方法重写及数据库中子程序的重载

首先方法重写和方法重载是建立在Java的面向对象的继承和多态的特性基础上而出现的.至于面向对象的继承和多态的特性我就不在这里多说了.继承是指在一个父类的基础再创建一个子类,这样子类就拥有了父类的非私有的特性,同时子类还可以扩展自己的特性,这样就引出了方法重写和方法重载! 一.方法重写(Override)         在Java中如何来定义重写:Java程序中类的继承特性可以产生一个子类,子类继承父类就拥有了父类的非私有的属性(方法和变量),在子类中可以增加自己的属性(方法和变量),同时也可以

Java实验报告五

课程:Java程序设计实验   班级:1353  姓名:符运锦  学号:20135323 成绩:                           指导教师:娄嘉鹏      实验日期:2015.6.9 实验密级:无            预习程度:                   实验时间:15:30~18:00 仪器组次:  23                    必修/选修: 选修                  实验序号:5 实验名称:TCP传输及加解密 实验内容: 1.运行

[问题记录]Java关于可变参数重载问题

突然发现java的可变参数重载是存在歧义的,只是不知道java内部是怎么处理的,特意做如下实验: 测试代码如下: 1 /** 2 * Created by ieayoio on 16-3-1. 3 */ 4 public class VarTest { 5 6 public static void aaa(int ...a){ 7 System.out.println("可变参数重载"); 8 } 9 10 public static void aaa(int a){ 11 Syste

第二次Java实验报告

Java实验报告 班级 计科二班 学号 20188437 姓名 何磊 完成时间 2019/9/12 评分等级 实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方法的作用,掌握用类作为类型声明变量和方法返回值: 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性: 理解static修饰付对类.类成员变量及类方法的影响. 实验内容 写一个名为Rectangle的类表示矩形.其属性包括宽width.高height和颜色color,width和heigh

第四周Java实验总结

Java实验报告 班级:计算机科学与技术2班            学号:20188430             姓名:詹洋 完成时间:4个小时 实验二 Java简单类与对象 实验目的 掌握类的定义,熟悉属性.构造函数.方法的作用,掌握用类作为类型声明变量和方法返回值: 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实例的方法和属性: 理解static修饰付对类.类成员变量及类方法的影响. 实验内容 写一个名为Rectangle的类表示矩形.其属性包括宽width.高height和

重载构造方法

当通过new语句创建一个对象时,在不同的条件下,对象可能会有不同的初始化行为.例如对于公司新进来的一个雇员,在一开始的时候,有可能他的姓名和年龄是未知的,也有可能仅仅他的姓名是已知的,也有可能姓名和年龄都是已知的.如果姓名是未知的,就暂且把姓名设为"无名氏",如果年龄是未知的,就暂且把年龄设为-1. 可通过重载构造方法来表达对象的多种初始化行为.以下例程的Employee类的构造方法有三种重载形式.在一个类的多个构造方法中,可能会出现一些重复操作.为了提高代码的可重用性,Java语言允