Java類和對象的設計

      網友投稿 855 2025-04-04

      目錄


      一、實驗目的

      二、實驗代碼

      1.定義一個類MyProgram,包含兩個屬性:

      2. 在Vehicle類的基礎上創建一個Tractor(拖拉機)類

      3. 組合實現汽車類

      4. 有圖形接口Shape,參照圓Circle類補充完整正方形Square和三角形Triangle類,并分析運行結果。

      5. USB接口程序設計

      6.this關鍵字主要有三個應用:

      7.請簡述static關鍵字的作用

      8.請簡述super關鍵字的作用

      9.請簡述final關鍵字的作用

      每文一語

      一、實驗目的

      1. 掌握面向對象的編程思想、類與對象;

      2. 掌握類的封裝性、繼承性和多態性的作用;

      3. 掌握成員變量和成員方法的特性、構造方法、toString方法、equals方法的使用;

      4. 掌握this、super、final、static等關鍵字的使用;

      5. 掌握接口及接口對象的使用;

      6. 掌握包的定義與使用;

      7. 掌握四種訪問控制權限private、default、protected、public。

      二、實驗代碼

      1.定義一個類MyProgram,包含兩個屬性:

      一個是private的整型屬性data、一個是private的String類型屬性str,封裝這兩個屬性的四個方法setData( )和getData( )、setStr( )和getStr( );重寫toString方法(自定義格式);重寫equals方法(屬性data和屬性str均相同才表示兩個對象相等)。并編寫測試程序,測試MyProgram類的使用。

      package 作業練習.test2;

      public class MyProgram {

      public static void main(String[] args) {

      Test t1=new Test();

      Test t2=new Test();

      t1.setStr("A");

      t2.setStr("B");

      t1.setData(1);

      t2.setData(2);

      System.out.println(t1.equals(t2));

      System.out.println(t1.toString());

      System.out.println(t2.toString());

      }

      }

      class Test{

      private String str;

      private int data;

      public String getStr() {

      return str;

      }

      public void setStr(String str) {

      this.str = str;

      }

      public int getData() {

      return data;

      }

      public void setData(int data) {

      this.data = data;

      }

      @Override

      public boolean equals(Object object) {

      Test test =(Test) object;

      if(test.getData()==this.getData()&&test.getStr() == this.getStr()) {

      return true;

      }

      else {

      return false;

      }

      }

      @Override

      public String toString() {

      return "str為"+this.getStr()+"\tdata為:"+this.getData();

      }

      }

      2. 在Vehicle類的基礎上創建一個Tractor(拖拉機)類

      它不僅擁有journey、wheelNum、LoadNum、driveSpeed四個屬性和DriveAt()方法,而且還擁有自己的plough()方法,在該方法中要求能夠顯示journey、wheelNum、LoadNum三個屬性的值。請編寫測試類,調用DriveAt()、plough()方法。

      package 作業練習.test2;

      public class Vehicle {

      public float journey;

      public int wheelNum;

      public int loadNum;

      public int driveSpeed;

      public Vehicle() {

      journey = 100.3f;

      wheelNum = 4;

      loadNum = 1;

      }

      public void driveAt(int speed) {

      if (speed >= 60) {

      System.out.println("行車速度太快,容易造成事故");

      driveSpeed = 40;

      } else {

      System.out.println("你在安全行駛速度內行駛");

      driveSpeed = speed;

      }

      }

      }

      package 作業練習.test2;

      public class Tractor extends Vehicle {

      public void plough() {

      System.out.println("公里數:"+this.journey);

      System.out.println("車速:"+this.driveSpeed);

      System.out.println("承載量:"+this.loadNum);

      }

      public static void main(String[] args) {

      Tractor t = new Tractor();

      t.plough();

      t.driveAt(80);

      t.plough();

      }

      }

      3. 組合實現汽車類

      問題描述:一輛Car有(has)四個輪子(Wheels)和一個發動機(Engine)。現在要求用組合方法設計類Car、類Wheel和類Engine。

      (1) 類Engine 有字符串屬性type記錄發動機的型號;

      有構造方法,可設置發動機的型號;

      有方法start()啟動引擎(輸出發動機型號和字符串“starts”的)。

      (2)類Wheel有字符串屬性type記錄輪胎的型號,有整數類型屬性index記錄當前輪胎編號(1:front-left,2:front-right,3:back-left,4:back-right);

      有構造方法,可設置輪胎的型號和編號;

      有方法roll()表示輪胎正在轉動(輸出輪胎型號、輪胎位置和“rolling”的字符串)。

      (3)類Car有字符串屬性model記錄轎車的型號,有屬性wheels[]和engine,分別是Wheel類對象數組和Engine類對象;

      有構造方法,參數是三個字符串,分別表示轎車的型號、輪胎型號和發動機的型號;

      有方法changeWheel()可以改變指定輪胎的型號;

      有方法start(),先輸出轎車型號和字符串“firing”,然后調用Engine的start(),再調用所有輪胎的roll(),最后顯示轎車型號和字符串“running”。

      (4)編寫測試程序測試上述所有方法。

      package 作業練習.test2;

      class Engine extends Car {

      String type ;

      public void Engine(String type) {

      this.type = type;

      }

      void start() {

      System.out.println(type + " starts");

      }

      }

      class Wheel extends Car {

      String type ;

      int index = 0;

      public void Wheel(String type, int index) {

      this.type = type;

      this.index = index;

      }

      void roll() {

      System.out.println("wheel" + index + " " + type + " rolling");

      }

      }

      public class Car {

      String model;

      static Wheel[] wheels;

      static Engine engine = new Engine();

      Car(String model, Wheel[] wheels, String eg) {

      this.model = model;

      this.wheels = wheels;

      engine.Engine(eg);

      }

      Car() {

      }

      public void changeWheel(int index, String str) {

      wheels[index - 1].Wheel(str, index);

      }

      void start() {

      System.out.println(model + " firing");

      engine.start();

      for (int i = 0; i < 4; i++) {

      wheels[i].roll();

      }

      }

      public static void main(String[] args) {

      Wheel[] wheels = new Wheel[4];

      String model = "瑪莎拉蒂";

      String engine = "FSI2.0L";

      for (int i = 1; i <= 4; i++) {

      wheels[i - 1] = new Wheel();

      wheels[i - 1].Wheel("德國馬牌", i);

      }

      Car car = new Car(model, wheels, engine);

      car.start();

      System.out.println("-----更改輪胎型號-----");

      car.changeWheel(2, "米其林");

      car.changeWheel(3, "倍耐力");

      car.start();

      }

      }

      4. 有圖形接口Shape,參照圓Circle類補充完整正方形Square和三角形Triangle類,并分析運行結果。

      package 作業練習.test2;

      interface Shape {

      void draw();

      void erase();

      }

      class Circle implements Shape {

      public void draw() {

      System.out.println("Circle.draw()");

      }

      public void erase() {

      System.out.println("Circle.erase()");

      }

      }

      class Square implements Shape {

      public void draw() {

      System.out.println("Square.draw()");

      }

      public void erase() {

      System.out.println("Square.draw()");

      }

      }

      class Triangle implements Shape {

      public void draw() {

      System.out.println("Triangle.draw()");

      }

      public void erase() {

      System.out.println("Triangle.draw()");

      }

      }

      public class Shapes {

      public static Shape randShape() {

      switch ((int) (Math.random() * 3)) {

      default:

      case 0:

      return new Circle();

      case 1:

      return new Square();

      case 2:

      return new Triangle();

      }

      }

      public static void main(String[] args) {

      Shape[] s = new Shape[9];

      for (int i = 0; i < s.length; i++)

      s[i] = randShape();

      for (int i = 0; i < s.length; i++)

      s[i].draw();

      }

      }

      5. USB接口程序設計

      通常人們使用的計算機上都有USB接口,鼠標、鍵盤、麥克風等都可以連接到USB接口中使用。在計算機啟動時,這些設備也隨之啟動;當計算機關閉時,這些設備也會隨之關閉。鼠標、鍵盤、麥克風等USB接口設備都啟動后,計算機才開機成功;當這些設備都關閉后,計算機才關機成功。

      讀所編寫的USB接口程序,該程序模擬了計算機的開機和關機過程,寫出運行結果。

      package 作業練習.test2.USB接口;

      public class Computer {

      private USB[] usbArr=new USB[4];

      //向計算機上連接一個USB設備

      public void add(USB usb){

      //遍歷所有的插槽

      for(int i=0;i

      //如果發現一個空的

      if(usbArr[i]==null){

      usbArr[i]=usb;

      break;

      }

      }

      }

      //計算的開機功能

      public void powerOn(){

      //遍歷所有的插槽

      for(int i=0;i

      //如果發現有設備

      if(usbArr[i]!=null){

      //將USB設備啟動

      usbArr[i].turnOn();

      }

      }

      System.out.println("計算機開機成功!!!");

      }

      //計算的關機功能

      public void powerOff(){

      //遍歷所有的插槽

      for(int i=0;i

      //如果發現有設備

      if(usbArr[i]!=null){

      //將USB設備關閉

      usbArr[i].turnOn();

      }

      }

      System.out.println("計算機關機成功!!!");

      }

      }

      package 作業練習.test2.USB接口;

      public class KeyBoard implements USB {

      @Override

      public void turnOn() {

      System.out.println("鍵盤啟動了......");

      }

      @Override

      public void turnOff() {

      System.out.println("鍵盤關閉了......");

      }

      }

      package 作業練習.test2.USB接口;

      public class Mic implements USB {

      @Override

      public void turnOn() {

      System.out.println("麥克風啟動了......");

      }

      @Override

      public void turnOff() {

      System.out.println("麥克風關閉了......");

      }

      }

      package 作業練習.test2.USB接口;

      public class Mouse implements USB {

      @Override

      public void turnOn() {

      System.out.println("鼠標啟動了......");

      }

      @Override

      public void turnOff() {

      System.out.println("鼠標關閉了......");

      }

      }

      package 作業練習.test2.USB接口;

      Java類和對象的設計

      public class Test {

      public static void main(String[] args) {

      //實例化計算機對象

      Computer computer=new Computer();

      //向計算機中添加鼠標、麥克風、鍵盤

      computer.add(new Mouse());

      computer.add(new Mic());

      computer.add(new KeyBoard());

      //啟動計算機

      computer.powerOn();

      //關閉計算機

      computer.powerOff();

      }

      }

      package 作業練習.test2.USB接口;

      public interface USB {

      void turnOn();//啟動

      void turnOff();//關閉

      }

      6.this關鍵字主要有三個應用:

      (1)this調用本類中的屬性,也就是類中的成員變量;

      (2)this調用本類中的其他方法;

      (3)this調用本類中的其他構造方法,調用時要放在構造方法的首行。

      7.請簡述static關鍵字的作用

      static是一個修飾符,用于修飾類的成員方法、類的成員變量,另外可以編寫static代碼塊來優化程序性能。

      static修飾的方法一般稱作靜態方法,由于靜態方法不依賴于任何對象就可以進行訪問,因此對于靜態方法來說,是沒有this的,因為它不依附于任何對象,既然都沒有對象,就談不上this了。并且由于這個特性,在靜態方法中不能訪問類的非靜態成員變量和非靜態成員方法,因為非靜態成員方法/變量都必須依賴具體的對象才能夠被調用。static塊可以優化程序性能,是因為它的特性:只會在類被初次加載的時候執行一次。

      8.請簡述super關鍵字的作用

      super用于在 派生類中調用父類的重名方法,或者引用重名的變量。super被用在派生類中,就是為了明確調用父類的方法。

      class base

      {

      int a = 100;

      }

      class sup1 extends base

      {

      int a = 200;

      void show()

      {

      System.out.println(a);

      System.out.println(a);

      }

      public static void main(String[] args)

      {

      new sup1().show();

      }

      }

      9.請簡述final關鍵字的作用

      final關鍵字可以用于三個地方。用于修飾類、類屬性和類方法。

      被final關鍵字修飾的類不能被繼承,被final關鍵字修飾的類屬性和類方法不能被覆蓋(重寫);

      對于被final關鍵字修飾的類屬性而言,子類就不能給他重新賦值了,如果重新賦值,會報錯

      每文一語

      一個人活得幸不幸福,一要看是不是能睡著,二要看是不是能醒來

      今日幸運色是粉色喲!粉粉的快樂你也可以擁有自己的快樂......

      AI Java

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:無代碼開發平臺免費(無代碼編程 平臺免費)
      下一篇:如何設置excel打印區域的方法
      相關文章
      国产亚洲人成网站在线观看不卡| 亚洲av成人一区二区三区观看在线 | 亚洲色中文字幕在线播放| 国产亚洲综合色就色| 蜜桃传媒一区二区亚洲AV| 亚洲高清视频在线观看| 亚洲成色在线综合网站| 亚洲人成中文字幕在线观看| 亚洲日产韩国一二三四区| 亚洲精品午夜无码电影网| 亚洲精品你懂的在线观看| 红杏亚洲影院一区二区三区| 亚洲AV无码成H人在线观看| 亚洲欧美日韩中文字幕一区二区三区| 亚洲一区精彩视频| 亚洲成a人片在线观看中文app| 亚洲成a人片在线观看中文app| 亚洲自国产拍揄拍| 亚洲中文字幕一二三四区| 亚洲精品国产高清在线观看| 色综合久久精品亚洲国产| 相泽南亚洲一区二区在线播放| 亚洲AV无码之日韩精品| 国产成人亚洲精品91专区手机| 亚洲色欲一区二区三区在线观看| 久久亚洲高清观看| 亚洲电影一区二区| 亚洲最大视频网站| 色天使亚洲综合在线观看| 亚洲成a∨人片在无码2023| 偷自拍亚洲视频在线观看| 亚洲熟妇少妇任你躁在线观看无码| 精品亚洲一区二区三区在线播放| 亚洲色欲久久久综合网| 亚洲国产精品久久久久网站| 亚洲一区免费视频| 欧美日韩亚洲精品| 2048亚洲精品国产| 久久亚洲伊人中字综合精品| 亚洲欧洲日本天天堂在线观看| 中国亚洲呦女专区|