江陰市做網(wǎng)站的口碑營(yíng)銷策劃方案
Java學(xué)習(xí)筆記(新手純小白向)
第一章?JAVA基礎(chǔ)概念
第二章?JAVA安裝和環(huán)境配置
第三章?IntelliJ IDEA安裝
第四章?運(yùn)算符
第五章 運(yùn)算符聯(lián)系
第六章?判斷與循環(huán)
第七章?判斷與循環(huán)練習(xí)
第八章 循環(huán)高級(jí)綜合
第九章 數(shù)組介紹及其內(nèi)存圖
第十章 數(shù)組基礎(chǔ)練習(xí)
第十一章 方法基礎(chǔ)及簡(jiǎn)單應(yīng)用
第十二章 方法基礎(chǔ)練習(xí)
第十三章 前續(xù)知識(shí)綜合練習(xí)
第十四章 面向?qū)ο蠡A(chǔ)
第十五章 面向?qū)ο缶C合訓(xùn)練
第十六章 字符串基礎(chǔ)
第十七章 字符串基礎(chǔ)練習(xí)
第十八章 ArrayList集合
第十九章 ArrayList集合基礎(chǔ)練習(xí)
第二十章 面向?qū)ο筮M(jìn)階
第二十一章 面向?qū)ο筮M(jìn)階基礎(chǔ)練習(xí)
目錄
Java學(xué)習(xí)筆記(新手純小白向)
前言
一、員工
? ? ? ? 1.需求
? ? ? ? 2.參考答案
?二、角色
? ? ? ? 1.需求
? ? ? ? 2.分析
? ? ? ? 3.參考答案
?三、手機(jī)
? ? ? ? 1.需求
? ? ? ? 2.思考
? ? ? ? 3.提示
? ? ? ? 4.參考答案
?四、人
? ? ? ? 1.需求
????????2.參考答案
五、員工
? ? ? ? 1.需求
? ? ? ? 2.參考答案
?六、人與動(dòng)物
? ? ? ? 1.需求
? ? ? ? 2.參考答案
七、面積與周長(zhǎng)
????????1.需求
????????2.參考答案
?八、新舊手機(jī)
? ? ? ? 1.需求
? ? ? ? 2.參考答案
九、匿名內(nèi)部類調(diào)用方法
????????1.需求
????????2.參考答案
?十、輸出”HelloWorld”
? ? ? ? 1.需求
? ? ? ? 2.參考答案?
十一、創(chuàng)建對(duì)象并調(diào)用成員方法1
? ? ? ? 1.需求
? ? ? ? 2.參考答案
?十二、創(chuàng)建對(duì)象并調(diào)用成員方法2
? ? ? ? 1.需求
? ? ? ? 2.參考答案
總結(jié)
前言
本篇章主要展示了常見(jiàn)的一些基礎(chǔ)的面向?qū)ο筮M(jìn)階知識(shí)練習(xí)及解答
一、員工
? ? ? ? 1.需求
????????????????在黑馬程序員中有很多員工(Employee)。
????????????????按照工作內(nèi)容不同分教研部員工(Teacher)和行政部員工(AdminStaff)
????????????????教研部根據(jù)教學(xué)的方式不同又分為講師(Lecturer)和助教(Tutor)
????????????????行政部根據(jù)負(fù)責(zé)事項(xiàng)不同,又分為維護(hù)專員(Maintainer),采購(gòu)專員(Buyer)
????????????????公司的每一個(gè)員工都編號(hào),姓名和其負(fù)責(zé)的工作
????????????????每個(gè)員工都有工作的功能,但是具體的工作內(nèi)容又不一樣。
? ? ? ? 2.參考答案
public class Employee {//定義員工的屬性private String id;private String name;//定義空參構(gòu)造和帶參構(gòu)造public Employee() {}public Employee(String id, String name) {this.id = id;this.name = name;}//定義成員變量的get和set方法public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}//定義方法work,代表行為:工作public void work() {System.out.println("員工在工作");}
}
public class AdminStaff extends Employee {//定義空參構(gòu)造和帶參構(gòu)造public AdminStaff() {}public AdminStaff(String id, String name) {super(id, name);}//重寫(xiě)方法work@Overridepublic void work() {System.out.println("行政部員工在進(jìn)行行政工作");}
}
public class MainTrainer extends AdminStaff {//定義空參構(gòu)造和帶參構(gòu)造public MainTrainer() {}public MainTrainer(String id, String name) {super(id, name);}//重寫(xiě)方法work@Overridepublic void work() {System.out.println("維護(hù)專員在進(jìn)行維護(hù)");}
}
public class Buyer extends AdminStaff {//定義空參構(gòu)造和帶參構(gòu)造public Buyer() {}public Buyer(String id, String name) {super(id, name);}//重寫(xiě)方法work@Overridepublic void work() {System.out.println("采購(gòu)專員在采購(gòu)");}
}
public class Teacher extends Employee {//定義空參構(gòu)造和帶參構(gòu)造public Teacher() {}public Teacher(String id, String name) {super(id, name);}//重寫(xiě)方法work@Overridepublic void work() {System.out.println("教研部員工在進(jìn)行教學(xué)任務(wù)");}
}
public class Lecturer extends Teacher {//定義空參構(gòu)造和帶參構(gòu)造public Lecturer() {}public Lecturer(String id, String name) {super(id, name);}//重寫(xiě)方法work@Overridepublic void work() {System.out.println("講師在講課");}
}
public class Tutor extends Teacher {//定義空參構(gòu)造和帶參構(gòu)造public Tutor() {}public Tutor(String id, String name) {super(id, name);}//重寫(xiě)方法work@Overridepublic void work() {System.out.println("助教在批改作業(yè)");}
}
public class EmployeeTest {//在黑馬程序員中有很多員工(Employee)。//按照工作內(nèi)容不同分教研部員工(Teacher)和行政部員工(AdminStaff)//教研部根據(jù)教學(xué)的方式不同又分為講師(Lecturer)和助教(Tutor)//行政部根據(jù)負(fù)責(zé)事項(xiàng)不同,又分為維護(hù)專員(Maintainer),采購(gòu)專員(Buyer)//公司的每一個(gè)員工都編號(hào),姓名和其負(fù)責(zé)的工作//每個(gè)員工都有工作的功能,但是具體的工作內(nèi)容又不一樣。public static void main(String[] args) {//創(chuàng)建對(duì)象Lecturer l = new Lecturer("001", "zhangsan");Tutor t = new Tutor("002", "lisi");MainTrainer m = new MainTrainer("003", "wangwu");Buyer b = new Buyer("004", "zhaoliu");//調(diào)用方法System.out.println(l.getId() + "," + l.getName());l.work();System.out.println(t.getId() + "," + t.getName());t.work();System.out.println(m.getId() + "," + m.getName());m.work();System.out.println(b.getId() + "," + b.getName());b.work();}
}
?二、角色
? ? ? ? 1.需求
????????????????在傳智教育的tlias教學(xué)資源管理系統(tǒng)中,存在學(xué)生、老師角色會(huì)進(jìn)入系統(tǒng)。
? ? ? ? 2.分析
????????????????學(xué)生信息和行為(名稱,年齡,所在班級(jí),查看課表,填寫(xiě)聽(tīng)課反饋fillForm)
????????????????老師信息和行為(名稱,年齡,部門(mén)名稱,查看課表,發(fā)布問(wèn)題publishForm)
????????????????定義角色類作為父類包含屬性(名稱,年齡),行為(查看課表)
????????????????定義子類:學(xué)生類包含屬性(所在班級(jí)),行為(填寫(xiě)聽(tīng)課反饋)
????????????????定義子類:老師類包含屬性(部門(mén)名稱),行為(發(fā)布問(wèn)題)
? ? ? ? 3.參考答案
public class Role {//定義角色的屬性private String name;private int age;//定義空參構(gòu)造和帶參構(gòu)造public Role() {}public Role(String name, int age) {this.name = name;this.age = age;}//定義成員變量的get和set方法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;}//定義方法viewSchedule,代表行為:查看課表public void viewSchedule() {System.out.println("查看課表");}
}
public class Teacher extends Role {//定義老師的屬性private String department;//定義空參構(gòu)造和帶參構(gòu)造public Teacher() {}public Teacher(String name, int age, String department) {super(name, age);this.department = department;}//定義成員變量的get和set方法public String getDepartment() {return department;}public void setDepartment(String department) {this.department = department;}//定義方法publishForm,代表行為:發(fā)布問(wèn)題public void publishForm() {System.out.println("發(fā)布問(wèn)題");}
}
public class Student extends Role {//定義學(xué)生的屬性private String atClass;//定義空參構(gòu)造和帶參構(gòu)造public Student() {}public Student(String name, int age, String atClass) {super(name, age);this.atClass = atClass;}//定義成員變量的get和set方法public String getAtClass() {return atClass;}public void setAtClass(String atClass) {this.atClass = atClass;}//定義方法fillForm,代表行為:填寫(xiě)聽(tīng)課反饋public void fillForm() {System.out.println("填寫(xiě)聽(tīng)課反饋");}
}
public class RoleTest {//在傳智教育的tlias教學(xué)資源管理系統(tǒng)中,存在學(xué)生、老師角色會(huì)進(jìn)入系統(tǒng)。public static void main(String[] args) {//創(chuàng)建老師和學(xué)生對(duì)象Student student1 = new Student("zhangsan", 23, "2203");Teacher teacher1 = new Teacher("lisi", 34, "Java");//打印信息,并調(diào)用方法System.out.println(student1.getName() + "," + student1.getAge() + "," + student1.getAtClass());student1.viewSchedule();student1.fillForm();System.out.println("————————————————");System.out.println(teacher1.getName() + "," + teacher1.getAge() + "," + teacher1.getDepartment());teacher1.viewSchedule();teacher1.publishForm();}
}
?三、手機(jī)
? ? ? ? 1.需求
????????????????完成代碼(按照標(biāo)準(zhǔn)格式寫(xiě)),然后在測(cè)試類中測(cè)試。
? ? ? ? ? ? ? ? (1)手機(jī)類Phone
????????????????????????屬性:品牌brand,價(jià)格price
????????????????????????無(wú)參構(gòu)造,有參構(gòu)造
????????????????????????行為:打電話call,發(fā)短信sendMessage,玩游戲playGame
? ? ? ? ? ? ? ? (2)測(cè)試類
????????????????????????創(chuàng)建Phone類對(duì)象,調(diào)用Phone類中的方法
? ? ? ? 2.思考
????????????????假設(shè)所有的手機(jī)都有屬性屏幕的尺寸(int size),而且假設(shè)所有手機(jī)的屏幕尺寸為6,應(yīng)該如何實(shí)現(xiàn)?
? ? ? ? 3.提示
????????????????? 可以把size定義為靜態(tài)
? ? ? ? 4.參考答案
public class Phone {//定義手機(jī)的屬性private String brand;private double price;private static int size;//定義空參構(gòu)造和帶參構(gòu)造public Phone() {}public Phone(String brand, double price) {this.brand = brand;this.price = price;}//定義成員變量的get和set方法public String getBrand() {return brand;}public void setBrand(String brand) {this.brand = brand;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public static int getSize() {return size;}public static void setSize(int size) {Phone.size = size;}//定義方法call,代表行為:打電話public void call() {System.out.println("打電話");}//定義方法sendMessage,代表行為:發(fā)短信public void sendMessage() {System.out.println("發(fā)短信");}//定義方法playGame,代表行為:玩游戲public void playGame() {System.out.println("玩游戲");}
}
public class PhoneTest {//完成代碼(按照標(biāo)準(zhǔn)格式寫(xiě)),然后在測(cè)試類中測(cè)試。//1.手機(jī)類Phone//屬性:品牌brand,價(jià)格price//無(wú)參構(gòu)造,有參構(gòu)造//行為:打電話call,發(fā)短信sendMessage,玩游戲playGame//2.測(cè)試類//創(chuàng)建Phone類對(duì)象,調(diào)用Phone類中的方法//假設(shè)所有的手機(jī)都有屬性屏幕的尺寸(int size),而且假設(shè)所有手機(jī)的屏幕尺寸為6,應(yīng)該如何實(shí)現(xiàn)?public static void main(String[] args) {//對(duì)手機(jī)屏幕尺寸進(jìn)行賦值Phone.setSize(6);//創(chuàng)建手機(jī)對(duì)象Phone phone1 = new Phone("xiaomi", 1999.99);//打印信息,并調(diào)用方法System.out.println(phone1.getBrand() + "," + phone1.getPrice() + "," + Phone.getSize());phone1.call();phone1.sendMessage();phone1.playGame();}
}
?四、人
? ? ? ? 1.需求
????????????????(1)定義Person類
????????????????????????屬性:
????????????????????????????????姓名name、性別gender、年齡age、國(guó)籍nationality;
????????????????????????方法:
????????????????????????????????吃飯eat、睡覺(jué)sleep,工作work。
????????????????(2)根據(jù)人類,創(chuàng)建一個(gè)學(xué)生類Student
????????????????????????增加屬性:
????????????????????????????????學(xué)校school、學(xué)號(hào)stuNumber;
????????????????????????重寫(xiě)工作方法(學(xué)生的工作是學(xué)習(xí))。
????????????????(3)根據(jù)人類,創(chuàng)建一個(gè)工人類Worker
????????????????????????增加屬性:
????????????????????????????????單位unit、工齡workAge;
????????????????????????重寫(xiě)工作方法(工人的工作是蓋房子)。
????????????????(4)根據(jù)學(xué)生類,創(chuàng)建一個(gè)學(xué)生干部類 StudentLeader
????????????????????????增加屬性:
????????????????????????????????職務(wù)job;
????????????????????????增加方法:開(kāi)會(huì)meeting。
????????????????(5)編寫(xiě)測(cè)試類分別對(duì)上述3類具體人物進(jìn)行測(cè)試。
????????????????(6)要求運(yùn)行結(jié)果:
學(xué)生需要學(xué)習(xí)!
工人的工作是蓋房子!
學(xué)生干部喜歡開(kāi)會(huì)!
????????2.參考答案
public class Person {//定義人的屬性private String name;private String gender;private int age;private String nationality;//定義空參構(gòu)造和帶參構(gòu)造public Person() {}public Person(String name, String gender, int age, String nationality) {this.name = name;this.gender = gender;this.age = age;this.nationality = nationality;}//定義成員變量的get和set方法public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getNationality() {return nationality;}public void setNationality(String nationality) {this.nationality = nationality;}//定義方法eat,代表行為:吃飯public void eat() {System.out.println("人類要工作");}//定義方法sleep,代表行為:睡覺(jué)public void sleep() {System.out.println("人類要睡覺(jué)");}//定義方法work,代表行為:工作public void work() {System.out.println("人類要工作");}
}
public class Worker extends Person {//定義工人的屬性private String unit;private double workAge;//定義空參構(gòu)造和帶參構(gòu)造public Worker() {}public Worker(String name, String gender, int age, String nationality, String unit, double workAge) {super(name, gender, age, nationality);this.unit = unit;this.workAge = workAge;}//定義成員變量的get和set方法public String getUnit() {return unit;}public void setUnit(String unit) {this.unit = unit;}public double getWorkAge() {return workAge;}public void setWorkAge(double workAge) {this.workAge = workAge;}//重寫(xiě)方法work@Overridepublic void work() {System.out.println("工人的工作是蓋房子!");}
}
public class Student extends Person {//定義學(xué)生的屬性private String school;private String stuNumber;//定義空參構(gòu)造和帶參構(gòu)造public Student() {}public Student(String name, String gender, int age, String nationality, String school, String stuNumber) {super(name, gender, age, nationality);this.school = school;this.stuNumber = stuNumber;}//定義所有成員變量的get和set方法public String getSchool() {return school;}public void setSchool(String school) {this.school = school;}public String getStuNumber() {return stuNumber;}public void setStuNumber(String stuNumber) {this.stuNumber = stuNumber;}//重寫(xiě)方法work@Overridepublic void work() {System.out.println("學(xué)生需要學(xué)習(xí)!");}
}
public class StudentLeader extends Student {//定義學(xué)生干部的屬性private String job;//定義空參構(gòu)造和帶參構(gòu)造public StudentLeader() {}public StudentLeader(String name, String gender, int age, String nationality, String school, String stuNumber, String job) {super(name, gender, age, nationality, school, stuNumber);this.job = job;}//定義成員變量的get和set方法public String getJob() {return job;}public void setJob(String job) {this.job = job;}//定義方法meeting,代表行為:開(kāi)會(huì)public void meeting() {System.out.println("學(xué)生干部喜歡開(kāi)會(huì)!");}
}
public class PersonTest {//分析以下需求,并用代碼實(shí)現(xiàn)//1.定義Person類//屬性://姓名name、性別gender、年齡age、國(guó)籍nationality;//方法://吃飯eat、睡覺(jué)sleep,工作work。//2.根據(jù)人類,創(chuàng)建一個(gè)學(xué)生類Student//增加屬性://學(xué)校school、學(xué)號(hào)stuNumber;//重寫(xiě)工作方法(學(xué)生的工作是學(xué)習(xí))。//3.根據(jù)人類,創(chuàng)建一個(gè)工人類Worker//增加屬性://單位unit、工齡workAge;//重寫(xiě)工作方法(工人的工作是蓋房子)。//4.根據(jù)學(xué)生類,創(chuàng)建一個(gè)學(xué)生干部類 StudentLeader//增加屬性://職務(wù)job;//增加方法:開(kāi)會(huì)meeting。//5.編寫(xiě)測(cè)試類分別對(duì)上述3類具體人物進(jìn)行測(cè)試。//6.要求運(yùn)行結(jié)果://學(xué)生需要學(xué)習(xí)!//工人的工作是蓋房子!//學(xué)生干部喜歡開(kāi)會(huì)!public static void main(String[] args) {//創(chuàng)建對(duì)象Student student = new Student("zhangsan", "man", 23, "China", "岳麓書(shū)院", "c001");Worker worker = new Worker("lisi", "woman", 46, "China", "中建七局", 12.3);StudentLeader studentLeader = new StudentLeader("wangwu", "man", 24, "US", "MIT", "u001", "leader");//調(diào)用方法,打印結(jié)果student.work();worker.work();studentLeader.meeting();}
}
五、員工
? ? ? ? 1.需求
????????????????(1)定義項(xiàng)目經(jīng)理類 屬性: 姓名 工號(hào) 工資 獎(jiǎng)金 行為: 工作work
????????????????(2)定義程序員類 屬性: 姓名 工號(hào) 工資 行為: 工作work
????????????????(3)向上抽取一個(gè)父類,讓這兩個(gè)類都繼承這個(gè)父類,共有的屬性寫(xiě)在父類中,子類重寫(xiě)父類中的方法
????????????????(4)編寫(xiě)測(cè)試類:完成這兩個(gè)類的測(cè)試
? ? ? ? 2.參考答案
public class Employee {//定義員工的屬性private String name;private String id;private double salary;//定義空參構(gòu)造和帶參構(gòu)造public Employee() {}public Employee(String name, String id, double salary) {this.name = name;this.id = id;this.salary = salary;}//定義成員變量的get和set方法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 double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}//定義方法work,代表行為:工作public void work() {System.out.println("員工在工作");}
}
public class Manager extends Employee {//定義項(xiàng)目經(jīng)理的屬性private double bonus;//定義空參構(gòu)造和帶參構(gòu)造public Manager() {}public Manager(String name, String id, double salary, double bonus) {super(name, id, salary);this.bonus = bonus;}//定義成員變量的get和set方法public double getBonus() {return bonus;}public void setBonus(double bonus) {this.bonus = bonus;}//重寫(xiě)方法workpublic void work() {System.out.println("項(xiàng)目經(jīng)理正在增加需求");}
}
public class Programmer extends Employee {//定義空參構(gòu)造和帶參構(gòu)造public Programmer() {}public Programmer(String name, String id, double salary) {super(name, id, salary);}//重寫(xiě)方法workpublic void work() {System.out.println("程序員正在更改需求");}
}
public class EmployeeTest {//1.定義項(xiàng)目經(jīng)理類 屬性: 姓名 工號(hào) 工資 獎(jiǎng)金 行為: 工作work//2.定義程序員類 屬性: 姓名 工號(hào) 工資 行為: 工作work//3.向上抽取一個(gè)父類,讓這兩個(gè)類都繼承這個(gè)父類,共有的屬性寫(xiě)在父類中,子類重寫(xiě)父類中的方法//4.編寫(xiě)測(cè)試類:完成這兩個(gè)類的測(cè)試public static void main(String[] args) {//創(chuàng)建對(duì)象Manager manager = new Manager("zhangsan", "001", 19999.9, 39999.9);Programmer programmer = new Programmer("lisi", "002", 29999.9);//打印信息,并調(diào)用方法System.out.println(manager.getName() + "," + manager.getId() + "," + manager.getSalary() + "," + manager.getBonus());manager.work();System.out.println("——————————————");System.out.println(programmer.getName() + "," + programmer.getId() + "," + programmer.getSalary());programmer.work();}
}
?六、人與動(dòng)物
? ? ? ? 1.需求
????????????????(1)定義動(dòng)物類
????????????????????????屬性: 年齡,顏色
????????????????????????行為: eat(String something)方法(無(wú)具體行為,不同動(dòng)物吃的方式和東西不一樣,something表示吃的東西)
????????????????????????生成空參有參構(gòu)造,set和get方法
????????????????(2)定義狗類繼承動(dòng)物類
????????????????????????行為: eat(String something)方法,看家lookHome方法(無(wú)參數(shù))
????????????????(3)定義貓類繼承動(dòng)物類
????????????????????????行為:eat(String something)方法,逮老鼠catchMouse方法(無(wú)參數(shù))
????????????????(4)定義Person類
????????????????????????屬性: 姓名,年齡
????????????????????????行為1: keepPet(Dog dog,String something)方法
????????????????????????功能1:喂養(yǎng)寵物狗,something表示喂養(yǎng)的東西
????????????????????????該方法調(diào)用后打印結(jié)果為:顏色為黑色的2歲的狗,在吃骨頭
????????????????????????行為2: keepPet(Cat cat,String something)方法
????????????????????????功能2:喂養(yǎng)寵物貓,something表示喂養(yǎng)的東西
????????????????????????該方法調(diào)用后打印結(jié)果為:顏色為白色的2歲的貓,在吃小魚(yú)干
????????????????(5)生成空參有參構(gòu)造,set和get方法
????????????????(6)測(cè)試以上方法
? ? ? ? 2.參考答案
public class Animal {//定義動(dòng)物的屬性private int age;private String color;//定義空參構(gòu)造和帶參構(gòu)造public Animal() {}public Animal(int age, String color) {this.age = age;this.color = color;}//定義成員變量的get和set方法public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}//定義方法eat,代表行為:吃public String eat(String sth) {return "在吃" + sth;}
}
public class Cat extends Animal {//定義空參構(gòu)造和帶參構(gòu)造public Cat() {}public Cat(int age, String color) {super(age, color);}//重寫(xiě)方法eat@Overridepublic String eat(String sth) {return "喵喵喵地舔著吃" + sth;}//定義方法catchMouse,代表行為:逮老鼠public void catchMouse() {System.out.println("貓?jiān)诖鲜?#34;);}
}
public class Dog extends Animal {//定義空參構(gòu)造和帶參構(gòu)造public Dog() {}public Dog(int age, String color) {super(age, color);}//重寫(xiě)方法eat@Overridepublic String eat(String sth) {return "汪汪汪地咬著吃" + sth;}//定義方法lookHome,代表行為:看家public void lookHome() {System.out.println("狗在看家");}
}
public class Person {//定義人的屬性private String name;private int age;//定義空參構(gòu)造和帶參構(gòu)造public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}//定義成員變量的get和set方法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;}//定義方法keepPet,代表行為:喂養(yǎng)寵物狗public void keepPet(Dog dog, String sth) {System.out.println("顏色為" + dog.getColor() + "的" + dog.getAge() + "歲的狗," + dog.eat(sth));}//定義方法keepPet,代表行為:喂養(yǎng)寵物貓public void keepPet(Cat cat, String sth) {System.out.println("顏色為" + cat.getColor() + "的" + cat.getAge() + "歲的貓," + cat.eat(sth));}
}
public class AnimalTest {//根據(jù)需求完成代碼://1.定義動(dòng)物類//屬性: 年齡,顏色 行為: eat(String something)方法(無(wú)具體行為,不同動(dòng)物吃的方式和東西不一樣,something表示吃的東西)//生成空參有參構(gòu)造,set和get方法//2.定義狗類繼承動(dòng)物類//行為: eat(String something)方法,看家lookHome方法(無(wú)參數(shù))//3.定義貓類繼承動(dòng)物類//行為://eat(String something)方法,逮老鼠catchMouse方法(無(wú)參數(shù))//4.定義Person類//屬性: 姓名,年齡//行為: keepPet(Dog dog,String something)方法//功能:喂養(yǎng)寵物狗,something表示喂養(yǎng)的東西//該方法調(diào)用后打印結(jié)果為:顏色為黑色的2歲的狗,在吃骨頭//行為: keepPet(Cat cat,String something)方法 功能:喂養(yǎng)寵物貓,something表示喂養(yǎng)的東西//該方法調(diào)用后打印結(jié)果為:顏色為白色的2歲的貓,在吃小魚(yú)干//5.生成空參有參構(gòu)造,set和get方法//6.測(cè)試以上方法public static void main(String[] args) {//創(chuàng)建對(duì)象Dog dog = new Dog(2, "黑色");Cat cat = new Cat(3, "白色");Person person = new Person("zhangsan", 23);//打印信息,并調(diào)用方法System.out.println(person.getName() + "," + person.getAge());System.out.println(dog.getAge() + "," + dog.getColor());person.keepPet(dog, "骨頭");System.out.println(cat.getAge() + "," + cat.getColor());person.keepPet(cat, "小魚(yú)干");}
}
七、面積與周長(zhǎng)
????????1.需求
? ? ? ? ? ? ? ? (1)定義形狀類:
????????????????????????功能:求面積,求周長(zhǎng)
????????????????(2)定義圓形類Round:
????????????????????????屬性:半徑,圓周率
????????????????????????功能:求面積,求周長(zhǎng)
????????????????(3)定義長(zhǎng)方形類Rectangle:
屬性:長(zhǎng)和寬
????????????????????????功能:求面積,求周長(zhǎng)
????????????????(4)定義測(cè)試類:
分別創(chuàng)建圓形和長(zhǎng)方形對(duì)象,為相應(yīng)的屬性賦值
????????????????分別調(diào)用求面積和求周長(zhǎng)的方法
????????2.參考答案
public abstract class Shape {//定義空參構(gòu)造public Shape() {}//定義抽象方法getArea,表示行為求面積public abstract double getArea();//定義抽象方法getPerimeter,表示行為求周長(zhǎng)public abstract double getPerimeter();
}
public class Rectangle extends Shape {//定義長(zhǎng)方形的屬性private double length;private double width;//定義空參構(gòu)造和帶參構(gòu)造public Rectangle() {}public Rectangle(double length, double width) {this.length = length;this.width = width;}//定義所有成員變量的get和set方法public double getLength() {return length;}public void setLength(double length) {this.length = length;}public double getWidth() {return width;}public void setWidth(double width) {this.width = width;}@Overridepublic double getArea() {return length * width;}@Overridepublic double getPerimeter() {return 2 * (length + width);}
}
public class Round extends Shape {//定義圓形的屬性private double radius;private final double pi = 3.14;//定義空參構(gòu)造和帶參構(gòu)造public Round() {}public Round(double radius) {this.radius = radius;}//定義成員變量的get和set方法public double getRadius() {return radius;}public void setRadius(double radius) {this.radius = radius;}public double getPi() {return pi;}@Overridepublic double getArea() {return pi * (radius * radius);}@Overridepublic double getPerimeter() {return 2 * pi * radius;}
}
//需求
/*定義形狀類:功能:求面積,求周長(zhǎng)定義圓形類Round:屬性:半徑,圓周率功能:求面積,求周長(zhǎng)定義長(zhǎng)方形類Rectangle:屬性:長(zhǎng)和寬
功能:求面積,求周長(zhǎng)定義測(cè)試類:分別創(chuàng)建圓形和長(zhǎng)方形對(duì)象,為相應(yīng)的屬性賦值
分別調(diào)用求面積和求周長(zhǎng)的方法*/
public class Test {public static void main(String[] args) {//創(chuàng)建圓形對(duì)象Round r1 = new Round(2);//調(diào)用方法,求面積與周長(zhǎng)System.out.println("圓形的面積為:" + r1.getArea());System.out.println("圓形的周長(zhǎng)為:" + r1.getPerimeter());//創(chuàng)建長(zhǎng)方形對(duì)象Rectangle r2 = new Rectangle(4, 2);//調(diào)用方法,求面積與周長(zhǎng)System.out.println("長(zhǎng)方形的面積為:" + r2.getArea());System.out.println("長(zhǎng)方形的周長(zhǎng)為:" + r2.getPerimeter());}
}
?八、新舊手機(jī)
? ? ? ? 1.需求
????????????????(1)定義手機(jī)類
????????????????????????行為:打電話,發(fā)短信
????????????????(2)定義接口IPlay
????????????????????????行為:玩游戲
????????????????(3)定義舊手機(jī)類繼承手機(jī)類
????????????????????????行為:繼承父類的行為
????????????????(4)定義新手機(jī)繼承手機(jī)類實(shí)現(xiàn)IPlay接口
????????????????????????行為:繼承父類的行為,重寫(xiě)玩游戲方法
????????????????(5)定義測(cè)試類
????????????????????????在測(cè)試類中定義一個(gè) 用手機(jī)的方法,要求該方法既能接收老手機(jī)對(duì)象,也能接收新手機(jī)對(duì)象
????????????????????????在該方法內(nèi)部調(diào)用打電話,發(fā)短信以及新手機(jī)特有的玩游戲方法
? ? ? ? 2.參考答案
public class Phone {//定義空參構(gòu)造public Phone() {}//定義方法call,代表行為:打電話public void call() {System.out.println("用手機(jī)打電話");}//定義方法message,代表行為:發(fā)短信public void message() {System.out.println("用手機(jī)發(fā)短信");}
}
public class OldPhone extends Phone {
}
public class NewPhone extends Phone implements IPlay {@Overridepublic void playGame() {System.out.println("用新手機(jī)玩游戲");}
}
public interface IPlay {//定義抽象方法playGame,代表行為:玩游戲public abstract void playGame();
}
//需求
/*定義手機(jī)類行為:打電話,發(fā)短信定義接口IPlay行為:玩游戲定義舊手機(jī)類繼承手機(jī)類行為:繼承父類的行為定義新手機(jī)繼承手機(jī)類實(shí)現(xiàn)IPlay接口行為:繼承父類的行為,重寫(xiě)玩游戲方法定義測(cè)試類在測(cè)試類中定義一個(gè)用手機(jī)的方法,要求該方法既能接收老手機(jī)對(duì)象,也能接收新手機(jī)對(duì)象在該方法內(nèi)部調(diào)用打電話,發(fā)短信以及新手機(jī)特有的玩游戲方法*/
public class Test {public static void main(String[] args) {//使用多態(tài),創(chuàng)建新手機(jī)對(duì)象和老手機(jī)對(duì)象Phone p1 = new OldPhone();Phone p2 = new NewPhone();usePhone(p1);usePhone(p2);}//定義方法usePhone,代表行為:用手機(jī)public static void usePhone(Phone p) {p.call();p.message();if (p instanceof NewPhone) {((NewPhone) p).playGame();}}
}
九、匿名內(nèi)部類調(diào)用方法
????????1.需求
????????????????(1)接口IPlay中有一個(gè)方法playGame(),在測(cè)試類中如何調(diào)用該方法?
????????????????????????要求1.創(chuàng)建子類實(shí)現(xiàn)接口的方式實(shí)現(xiàn) 要求2:用匿名內(nèi)部類實(shí)現(xiàn)
????????????????(2)一個(gè)抽象類Fun中有一個(gè)抽象方法 fun() , 在測(cè)試類中如何調(diào)用該方法?
????????????????????????要求1.創(chuàng)建子類繼承抽象類的方式實(shí)現(xiàn) 要求2:用匿名內(nèi)部類實(shí)現(xiàn)
????????2.參考答案
public interface IPlay {public abstract void playGame();
}
public abstract class Fun {public abstract void fun();
}
public class Zi extends Fun implements IPlay {@Overridepublic void playGame() {System.out.println("玩游戲");}@Overridepublic void fun() {System.out.println("子類繼承抽象類的方式實(shí)現(xiàn)fun方法");}
}
//需求
/*接口IPlay中有一個(gè)方法playGame(),在測(cè)試類中如何調(diào)用該方法?
要求1.創(chuàng)建子類實(shí)現(xiàn)接口的方式實(shí)現(xiàn) 要求2:用匿名內(nèi)部類實(shí)現(xiàn)一個(gè)抽象類Fun中有一個(gè)抽象方法 fun() , 在測(cè)試類中如何調(diào)用該方法?
要求1.創(chuàng)建子類繼承抽象類的方式實(shí)現(xiàn) 要求2:用匿名內(nèi)部類實(shí)現(xiàn)*/
public class Test {public static void main(String[] args) {//使用創(chuàng)建子類實(shí)現(xiàn)接口的方式,在測(cè)試類中調(diào)用方法playGame()Zi z1 = new Zi();z1.playGame();//用匿名內(nèi)部類實(shí)現(xiàn)new IPlay() {@Overridepublic void playGame() {System.out.println("用匿名內(nèi)部類實(shí)現(xiàn)playGame方法");}}.playGame();//使用創(chuàng)建子類繼承抽象類的方式,在測(cè)試類中調(diào)用方法fun()Zi z2 = new Zi();z2.fun();//用匿名內(nèi)部類實(shí)現(xiàn)new Fun() {@Overridepublic void fun() {System.out.println("用匿名內(nèi)部類實(shí)現(xiàn)fun方法");}}.fun();}
}
?十、輸出”HelloWorld”
? ? ? ? 1.需求
????????????????在控制臺(tái)輸出”HelloWorld”
????????????????自己書(shū)寫(xiě),不要用idea自動(dòng)生成。
interface Inter {void show();
}
class Outer { //補(bǔ)齊代碼
}
public class OuterDemo {public static void main(String[] args) {Outer.method().show();}
}
? ? ? ? 2.參考答案?
//需求
//在控制臺(tái)輸出”HelloWorld”
interface Inter {void show();
}class Outer {//補(bǔ)齊代碼public static Inter method() {return new Inter() {@Overridepublic void show() {System.out.println("HelloWorld");}};}
}public class OuterDemo {public static void main(String[] args) {Outer.method().show();}
}
十一、創(chuàng)建對(duì)象并調(diào)用成員方法1
? ? ? ? 1.需求
????????????????在測(cè)試類Test中創(chuàng)建A的對(duì)象a并調(diào)用成員方法methodA(),要求用兩種方式實(shí)現(xiàn)
????????????????自己書(shū)寫(xiě),不要用idea自動(dòng)生成。
public class Test {public static void main(String[] args) { }
}//定義接口
interface InterA {void showA();
}class A {public void methodA(InterA a) {a.showA(); }
}
? ? ? ? 2.參考答案
//需求
//在測(cè)試類Test中創(chuàng)建A的對(duì)象a并調(diào)用成員方法methodA(),要求用兩種方式實(shí)現(xiàn)
public class Test {public static void main(String[] args) {//創(chuàng)建A的對(duì)象a并調(diào)用成員方法methodA()A a = new A();InterA a1 = new InterA() {@Overridepublic void showA() {System.out.println("第一種方式,重寫(xiě)showA方法");}};//第一種方式傳入對(duì)象a1,第二種方式傳入對(duì)象aa.methodA(a1);}
}//定義接口
interface InterA {void showA();
}class A implements InterA {public void methodA(InterA a) {a.showA();}@Overridepublic void showA() {System.out.println("第二種方式,重寫(xiě)showA方法");}
}
?十二、創(chuàng)建對(duì)象并調(diào)用成員方法2
? ? ? ? 1.需求
????????????????在測(cè)試類Test中創(chuàng)建B的對(duì)象b,并調(diào)用成員方法methodB
????????????????自己書(shū)寫(xiě),不要用idea自動(dòng)生成。
public class Test {public static void main(String[] args) {}
}//定義一個(gè)接口
interface InterB {void showB();
}//目標(biāo):調(diào)用成員方法methodB
class B {InterB b;public B(InterB b){this.b = b;}public void methodB(){b.showB(); }
}
? ? ? ? 2.參考答案
//需求
//在測(cè)試類Test中創(chuàng)建B的對(duì)象b,并調(diào)用成員方法methodB
public class Test {public static void main(String[] args) {B b = new B(new InterB() {@Overridepublic void showB() {System.out.println("傳入形參為InterB類型");}});b.methodB();}
}//定義一個(gè)接口
interface InterB {void showB();
}//目標(biāo):調(diào)用成員方法methodB
class B {InterB b;public B(InterB b) {this.b = b;}public void methodB() {b.showB();}
}
總結(jié)
在了解了面向?qū)ο筮M(jìn)階的基礎(chǔ)知識(shí)后,一定要自己獨(dú)立動(dòng)手練習(xí)代碼,為以后的進(jìn)階打好基礎(chǔ)。學(xué)習(xí)好面向?qū)ο蟮木幊趟枷?#xff0c;會(huì)極大提高代碼的復(fù)用性和可讀性。