1. 程式人生 > >Java實驗3類方法重載構造方法

Java實驗3類方法重載構造方法

整形 入參 account 實例 vol 實驗 tex stat 相同

實驗目的:

掌握類和方法的定義,對象的創建和使用。

掌握引用的概念和引用賦值。

掌握方法重載,構造方法的作用及使用。

掌握包的概念和使用。

一、實驗內容:

實驗題目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類方法重載構造方法