描述類介紹與使用
第一題:概念辨析
-
類是物件的模板,物件是類的實體
-
如何定義一個類,由哪些部分組成,各個部分的作用是什麼?
三部分:
成員變數:描述事物的狀態資訊
構造方法:建立事物物件
成員方法:描述事物能做什麼 -
如何建立一個物件,如何使用該物件?
// 建立物件格式:
資料型別 變數名 = new 資料型別();
// 物件使用方式:
變數名.成員變數
變數名.成員方法 -
區域性變數和成員變數的區別?
在類中的位置不同
成員變數:類中,方法外
區域性變數:方法中或者方法宣告上(形式引數)
作用範圍不一樣
成員變數:類中
初始化值的不同
成員變數:有預設值
區域性變數:沒有預設值。
在記憶體中的位置不同
成員變數:堆記憶體
區域性變數:棧記憶體
生命週期不同
成員變數:隨著物件的建立而存在,隨著物件的消失而消失
區域性變數:隨著方法的呼叫而存在,隨著方法的呼叫完畢而消失 -
構造方法和成員方法的區別?
作用不同:
構造方法:建立物件
成員方法:執行某具體功能
命名不同:
構造方法:類名一致
成員方法:自定義
返回值型別不同:
構造方法:無返回值型別
成員方法: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(); } }
-