目錄
一,面向對象進階訓練任務
1,編寫一個類 Book,代表圖書。
描述
代碼
2,通過類描述開課吧的 Java 學員。
描述
代碼
3,通過類描述衣服, 每個衣服對象建立時需要自動生成一個序号值
描述
代碼
一,面向對象進階訓練任務
1,編寫一個類 Book,代表圖書。
描述
具有屬性: 名稱(title)、頁數(pageNum),其中頁數不能少于 200 頁,否則輸出錯誤資訊,并賦予預設值 200。
具有方法: 為各屬性設定指派和取值方法。 detail,用來在控制台輸出每 本圖書的名稱和頁數
編寫測試類 BookTest 進行測試:為 Book 對象的屬性賦予初始值,并調 用 Book 對象的 detail 方法,看看輸出是否正确
代碼
package com.kaikeba.demo;
import java.util.Scanner;
/*
* 1. 編寫一個類 Book,代表圖書。
* 具有屬性: 名稱(title)、頁數(pageNum),其中頁數不能少于 200 頁,否則輸出錯誤資訊,并賦予預設值 200。
* 具有方法: 為各屬性設定指派和取值方法。 detail,用來在控制台輸出每 本圖書的名稱和頁數
* 編寫測試類 BookTest 進行測試:為 Book 對象的屬性賦予初始值,并調 用 Book 對象的 detail 方法,看看輸出是否正确
*/
public class BookTest {
public static void main(String[] args) {
Book book1 = new Book();
book1.setTitle("《明朝那些事兒》");
book1.setPageNum(209);
book1.detail();
Book book2 = new Book("《盜墓筆記》", 20);
book2.detail();
}
}
class Book{
/*
* 成員變量
*/
private String title; // 名稱
private int pageNum; // 頁數
/*
* 方法
*/
Book(){ // 構造方法——無參
title = "空";
pageNum = 200;
}
Book(String title, int pageNum){
this.setTitle(title);
this.setPageNum(pageNum);
}
public String getTitle() { // getter與setter方法
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
System.out.println("-------------------------------------------------------");
if(pageNum < 200) {
System.out.println("頁數不能少于200,已自動設定為預設值200");
this.pageNum = 200;
}else this.pageNum = pageNum;
}
public void detail() { // 輸出書籍詳情
System.out.println("書名:" + this.title);
System.out.println("頁數:" + this.pageNum);
}
}
2,通過類描述開課吧的 Java 學員。
描述
具有屬性: 姓名,年齡,性别,愛好,公司(都是:開課吧),學科(都 是:Java 學科)。
代碼
package com.kaikeba.demo;
/*
* 具有屬性: 姓名,年齡,性别,愛好,公司(都是:開課吧),學科(都 是:Java 學科)。
* 思考:請結合 static 修飾屬性進行更好的類設計。
*/
public class StudentTest {
public static void main(String[] args) {
Student.company = "開課吧";
Student.course = "java";
Student s1 = new Student("張三", "男", "rap", 18);
Student s2 = new Student("囡囡", "小孩", "piano", -1); // 性别 年齡錯誤處理測試
Student s3 = new Student("瑤", "女", "輔助", 280); // 年齡測試
s1.detail();
s2.detail();
s3.detail();
System.out.println("-------------------------------------------------------");
Student.company = "新職課";
s2.setSex("女");
s2.setAge(3);
s3.setAge(200);
s1.detail();
s2.detail();
s3.detail();
}
}
class Student{
private String name;
private String sex;
private String hobby;
static String company; // 靜态成員變量 可以使用類名調用 表示整個類所共有的
static String course; // 靜态成員變量
private int age;
// { // 構造代碼塊 每次建立對象時均會使用 這裡用于分割建立對象的展示
// System.out.println("-------------------------------------------------------");
// }
Student() {
this.name = "空";
this.sex = "空";
this.hobby = "空";
this.age = 0;
}
Student(String name, String sex, String hobby, int age){
this.setName(name);
this.setSex(sex);
this.setHobby(hobby);
this.setAge(age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
if(sex != "男" && sex != "女") {
System.out.println("同學【" + this.name + "】" + "的性别輸入為【" + sex + "】,請輸入 男/女");
}else this.sex = sex;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age < 0 || age > 200) {
System.out.println("同學【" + this.name + "】" +"的年齡輸入為【" + age + "】,請輸入 1-200");
this.age = 1;
}else this.age = age;
}
public void detail() {
System.out.println("姓名:" + this.name);
System.out.println("性别:" + this.sex);
System.out.println("愛好:" + this.hobby);
System.out.println("公司:" + Student.company);
System.out.println("課程:" + Student.course);
System.out.println("年齡:" + this.age);
System.out.println();
}
}
3,通過類描述衣服, 每個衣服對象建立時需要自動生成一個序号值
描述
代碼
package com.kaikeba.demo;
/*
* 3. 通過類描述衣服, 每個衣服對象建立時需要自動生成一個序号值。
* 要求:每個衣服的序号是不同的, 且是依次遞增 1 的
*/
public class ClothTest {
public static void main(String[] args) {
Clothes c1 = new Clothes("短袖", "M", "紅");
Clothes c2 = new Clothes("長袖", "L", "白");
Clothes c3 = new Clothes("羽絨服", "M", "白");
c1.detail();
c2.detail();
c3.detail();
}
}
class Clothes{
private static int count = 0; // 計數
private int ID; // 賦予編号
private String color;
private String size;
private String type;
/*
* 構造代碼塊 每次建立新的對象時均會調用
* 執行順序:靜态代碼塊>構造代碼塊>構造方法
*/
{
this.ID = ++count;
}
Clothes(){
}
Clothes(String type, String size, String color){
this.setColor(color);
this.setSize(size);
this.setType(type);
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
void detail() {
System.out.println("編号:" + this.ID);
System.out.println("類型:" + this.type);
System.out.println("大小:" + this.size);
System.out.println("顔色:" + this.color);
System.out.println();
}
}