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 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類方法重載構造方法