1. 程式人生 > 實用技巧 >描述類介紹與使用

描述類介紹與使用

基礎題目

第一題:概念辨析

  1. 一個類與它的物件之間是什麼關係?

    類是物件的模板,物件是類的實體
  2. 如何定義一個類,由哪些部分組成,各個部分的作用是什麼?

    三部分:
    成員變數:描述事物的狀態資訊
    構造方法:建立事物物件
    成員方法:描述事物能做什麼
  3. 如何建立一個物件,如何使用該物件?

    // 建立物件格式: 
    資料型別 變數名 = new 資料型別();
    // 物件使用方式:
    變數名.成員變數
    變數名.成員方法
  4. 區域性變數和成員變數的區別?

    在類中的位置不同 
    成員變數:類中,方法外
    區域性變數:方法中或者方法宣告上(形式引數)
    作用範圍不一樣
    成員變數:類中
    區域性變數:方法中
    初始化值的不同
    成員變數:有預設值
    區域性變數:沒有預設值。
    在記憶體中的位置不同
    成員變數:堆記憶體
    區域性變數:棧記憶體
    生命週期不同
    成員變數:隨著物件的建立而存在,隨著物件的消失而消失
    區域性變數:隨著方法的呼叫而存在,隨著方法的呼叫完畢而消失
  5. 構造方法和成員方法的區別?

    作用不同:
    構造方法:建立物件
    成員方法:執行某具體功能
    命名不同:
    構造方法:類名一致
    成員方法:自定義
    返回值型別不同:
    構造方法:無返回值型別
    成員方法:void或者確定的資料型別
    呼叫不同:
    構造方法:new 關鍵字呼叫
    成員方法:物件.成員方法名呼叫

第二題:語法練習

  • 定義一個圓形Circle類。

    • 屬性:

      • r:半徑

    • 構造方法:

      • 無參構造方法

      • 滿參構造方法

    • 成員方法:

      • get/set方法

      • showArea方法:列印圓形面積

      • showPerimeter方法:列印圓形周長

  • 定義測試類,建立Circle物件,並測試。

  • 程式碼實現,效果如圖所示:

  • 開發提示:

    面向周長公式:2 * 3.14* 半徑

    圓形面積公式:3.14* 半徑^2

  • 參考答案:

    • Circle類:

    public class Circle {
              int r;
        
              public Circle() {
              }
        
              public Circle(int r) {
                  this.r = r;
              }
        
              public int getR() {
                  return r;
              }
        
              public void setR(int r) {
                  this.r = r;
              }
        
              public void showArea(){
                  System.out.println("半徑為:"+ r +",面積為:"+ ( 3.14 * r * r));
              }
        
              public void showPerimeter(){
                  System.out.println("半徑為:"+ r +",面積為:"+ ( 2 * 3.14 * r));
              }
          }
    • 測試類:

     public class Test2 {
          public static void main(String[] args) {
              Circle circle = new Circle(8);
              circle.showArea();
              circle.showPerimeter();
          }
      }
    

      

第三題:語法練習

  • 定義一個日期MyDate類。

    • 屬性:

      • year:年

      • month:月

      • day:日

    • 構造方法:

      • 滿參構造方法

    • 成員方法:

      • get/set方法

      • showDate方法:列印日期。

      • isBi方法:判斷當前日期是否是閏年

  • 定義測試類,建立MyDate物件,並測試。

  • 程式碼實現,效果如圖所示:

  • 開發提示:

    • 閏年:

      • 普通年(不能被100整除的年份)能被4整除的為閏年。(如2004年就是閏年,1999年不是閏年);

      • 世紀年(能被100整除的年份)能被400整除的是閏年。(如2000年是閏年,1900年不是閏年);

  • 參考答案:

    • MyDate類:


     public class MyDate {
          int year;
          int month;
          int day;
    ​
          public MyDate(int year, int month, int day) {
              this.year = year;
              this.month = month;
              this.day = day;
          }
    ​
          public int getYear() {
              return year;
          }
    ​
          public void setYear(int year) {
              this.year = year;
          }
    ​
          public int getMonth() {
              return month;
          }
    ​
          public void setMonth(int month) {
              this.month = month;
          }
    ​
          public int getDay() {
              return day;
          }
    ​
          public void setDay(int day) {
              this.day = day;
          }
    ​
          public void showDate() {
              System.out.println("日期:" +
                      year +
                      "年" + month +
                      "月" + day +
                      "日");
          }
    ​
          public void isBi() {
    ​
              if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                  System.out.println(year + "年是閏年");
              } else {
                  System.out.println(year + "年不是閏年");
              }
          }
      }
  • 測試類:

public class Test3 {
	    public static void main(String[] args) {
	        MyDate date = new MyDate(1900, 1, 1);
	        date.showDate();
	        date.isBi();
	    }
	}

  

第四題:語法練習

  • 定義一個撲克Card類。

    • 屬性:

      • 花色

      • 點數

    • 構造方法:

      • 滿參構造方法

    • 成員方法:

      • showCard方法:列印牌面資訊

  • 定義測試類,建立Card物件,呼叫showCard方法。

  • 程式碼實現,效果如圖所示:

  • 參考答案:

    • Card類:

    public class Card {
          private String ds; // 點數
          private String hs; // 花色
    
          public Card(String ds, String hs) {
              this.ds = ds;
              this.hs = hs;
          }
    
          public void showCard() {
              System.out.println( ds +    hs  );
          }
      }
    測試類:
    
      public class Test5 {
          public static void main(String[] args) {
              Card card = new Card("黑桃", "A");
              card.showCard();
          }
      }
    

     

第五題:語法練習

  • 定義兩個類,經理類Manager,程式設計師類Coder

  • Coder類:

    • 屬性:姓名,工號,薪資

    • 構造方法:無參構造方法,滿參構造方法

    • 成員方法:

      • get/set方法

      • intro方法:列印姓名,工號資訊

      • showSalary方法:列印薪資資訊

      • work方法:列印工作資訊

  • Manager類:

    • 屬性:姓名,工號,薪資

      • 經理的薪資有兩部分組成:基本工資+獎金

    • 構造方法:無參構造方法,滿參構造方法

    • 成員方法:

      • get/set方法

      • intro方法:列印姓名,工號資訊

      • showSalary方法:列印薪資資訊

      • work方法:列印工作資訊

  • 定義測試類,建立Manager物件,建立Coder物件,並測試。

  • 程式碼實現,效果如圖所示:

  • 參考答案:

    • Coder類:

    package test4;
    
      public class Coder {
          private String name;
          private String id;
          private int salary; // 基本工資
    
          public Coder() {
    
          }
    
          public Coder(String name, String id, int salary) {
              this.name = name;
              this.id = id;
              this.salary = salary;
          }
    
          public String getName() {
              return name;
          }
    
          public void setName(String name) {
              this.name = name;
          }
    
          public String getId() {
              return id;
          }
    
          public void setId(String id) {
              this.id = id;
          }
    
          public int getSalary() {
              return salary;
          }
    
          public void setSalary(int salary) {
              this.salary = salary;
          }
    
          public void showSalary() {
              System.out.println("基本工資為" + salary + ",獎金無");
          }
    
          public void intro() {
              System.out.println("程式設計師姓名:" + name);
              System.out.println("工號:" + id);
          }
    
          public void work() {
              System.out.println("正在努力寫程式碼......");
          }
      }
    

      

    • Manager類:

     public class Manager {
          private String name;
          private String id;
          private int[] salary; // 基本工資 + 獎金
    
          public Manager() {
          }
    
          public Manager(String name, String id, int[] salary) {
              this.name = name;
              this.id = id;
              this.salary = salary;
          }
    
          public String getName() {
              return name;
          }
    
          public void setName(String name) {
              this.name = name;
          }
    
          public String getId() {
              return id;
          }
    
          public void setId(String id) {
              this.id = id;
          }
    
          public int[] getSalary() {
              return salary;
          }
    
          public void setSalary(int[] salary) {
              this.salary = salary;
          }
    
          public void showSalary() {
              System.out.println("基本工資為" + salary[0] + ",獎金為" + salary[1]);
          }
    
          public void intro() {
              System.out.println("經理姓名:" + name);
              System.out.println("工號:" + id);
          }
    
          public void work() {
              System.out.println("正在努力的做著管理工作,分配任務,檢查員工提交上來的程式碼.....");
          }
      }
    

      

    • 測試類:

     public class Test5 {
          public static void main(String[] args) {
              int[] salary  = {15000, 3000};
              Manager m = new Manager("James", "9527",salary );
              m.intro();
              m.showSalary();
              m.work();
    
              System.out.println("============");
              Coder c = new Coder();
              c.setName("Kobe");
              c.setId("0025");
              c.setSalary(10000);
              c.intro();
              c.showSalary();
              c.work();
    
          }
      }
    

      

第六題:語法練習

  • 老師類Teacher

    • 屬性:姓名name,年齡age,講課內容content

    • 成員方法:吃飯eat方法,講課teach方法

  • 學生類Student

    • 屬性:姓名name,年齡age,學習內容content 行為:吃飯eat方法, 學習study方法

  • 程式碼實現,效果如圖所示:

  • 參考答案:

    • Teacher類:

     package test6;
      /*
       */
      public class Teacher {
      	private String name;
      	private int age;
      	private String content;
      	/**
      	 * 講課方法
      	 */
      	public void jiangke() {
      		System.out.println("年齡為"+age+"的"+name+"正在亢奮的講著"+content+"的知識........");
      	}
    
      	public void eat() {
      		System.out.println("年齡為"+age+"的"+name+"正在吃飯....");
      	}
    
      	public String getName() {
      		return name;
      	}
      	public void setName(String name) {
      		this.name = name;
      	}
      	public int getAge() {
      		return age;
      	}
      	public void setAge(int age) {
      		this.age = age;
      	}
    
      	public String getContent() {
      		return content;
      	}
    
      	public void setContent(String content) {
      		this.content = content;
      	}
    
      	public Teacher() {
      	}
    
      	public Teacher(String name, int age, String content) {
      		this.name = name;
      		this.age = age;
      		this.content = content;
      	}
    
      }
    

      

    • 學生類:

    public class Student {
      	private String name;
      	private int age;
      	private String content;
      	public void study() {
      		System.out.println("年齡為"+age+"的"+name+"正在專心致志的聽著"+content+"的知識........");
      	}
      	public void eat() {
      		System.out.println("年齡為"+age+"的"+name+"正在吃飯....");
      	}
    
      	public Student(String name, int age, String content) {
      		this.name = name;
      		this.age = age;
      		this.content = content;
      	}
      	public Student() {
      	}
      	public String getName() {
      		return name;
      	}
      	public void setName(String name) {
      		this.name = name;
      	}
      	public int getAge() {
      		return age;
      	}
      	public void setAge(int age) {
      		this.age = age;
      	}
      	public String getContent() {
      		return content;
      	}
      	public void setContent(String content) {
      		this.content = content;
      	}
      }
    

      

    • 測試類:

     public class Test6 {
      	public static void main(String[] args) {
      		Teacher t = new Teacher();
      		t.setName("周老師");
      		t.setAge(30);
      		t.setContent("java面向物件");
      		t.eat();
      		t.jiangke();
      		Student stu = new Student("韓同學",18,"java面向物件");
      		stu.eat();
      		stu.study();
      	}
      }