第一題:概念辨析
- 什么叫做類與類的繼承奉芦,作用是什么赵抢?
- 就是子類繼承父類的屬性和行為,使得子類對(duì)象具有與父類相同的屬性声功、相同的行為烦却。
- 作用是子類復(fù)用父類內(nèi)容。
- 繼承后先巴,父類與子類之間其爵,各成員有什么樣的影響?
- 成員變量:
- 不重名伸蚯,沒有影響摩渺。
- 重名,就近使用朝卒,使用super區(qū)分父類變量证逻。
- 構(gòu)造方法:
- 無影響,但是子類構(gòu)造方法默認(rèn)調(diào)用父類構(gòu)造方法
- 成員方法:
- 不重名抗斤,沒有影響囚企。
- 重名,子類重寫父類方法瑞眼。
- 成員變量:
- 子類中龙宏,如何調(diào)用父類的成員?如何使用本類的成員伤疙?
- 父類成員方法:super.方法名
- 父類非私有成員變量:super.變量名
- 子類成員方法:this.方法名
- 子類成員變量:this.變量名
- 抽象方法與普通成員方法有什么區(qū)別银酗?
- 抽象方法使用abstract關(guān)鍵字修飾,沒有方法體徒像。
- 成員方法有方法體黍特。
- 抽象類與普通類有什么區(qū)別?
- 方法:
- 抽象類可以包含抽象方法和成員方法锯蛀。
- 普通類不可以包含抽象方法灭衷,只有成員方法。
- 對(duì)象:
- 抽象類不可以創(chuàng)建對(duì)象旁涤。
- 普通類可以創(chuàng)建對(duì)象翔曲。
- 方法:
第二題:語法練習(xí)
語法點(diǎn):繼承,抽象類
按步驟編寫代碼劈愚,效果如圖所示:
-
編寫步驟:
- 定義抽象類A瞳遍,抽象類B繼承A复凳,普通類C繼承B
- A類中辙浑,定義成員變量numa,賦值為10汗盘,抽象showA方法。
- B類中份蝴,定義成員變量numb犁功,賦值為20氓轰,抽象showB方法婚夫。
- C類中,定義成員變量numc署鸡,賦值為30案糙,重寫showA方法,打印numa靴庆,重寫showB方法时捌,打印numb,定義showC方法炉抒,打印numc奢讨。
- 測試類中,創(chuàng)建C對(duì)象焰薄,調(diào)用showA方法拿诸,showB方法,showC方法塞茅。
參考答案:
public class Test2 {
public static void main(String[] args) {
// 創(chuàng)建C對(duì)象
C c = new C();
// 調(diào)用c 中方法
c.showA();
c.showB();
c.showC();
}
}
abstract class A{
int numa = 10;
public abstract void showA();
}
abstract class B extends A{
int numb = 20;
public abstract void showB();
}
class C extends B{
int numc = 30;
@Override
public void showA() {
System.out.println("A類中numa:"+numa);
}
@Override
public void showB() {
System.out.println("B類中numb:"+numb);
}
public void showC(){
System.out.println("C類中numc:"+numc);
}
}
第三題:語法練習(xí)
語法點(diǎn):繼承亩码,抽象類
按步驟編寫代碼,效果如圖所示:
-
編寫步驟:
- 模擬農(nóng)學(xué)院動(dòng)物醫(yī)療系統(tǒng)信息野瘦。
- 定義抽象家禽類(Poultry)
- 私有成員變量:動(dòng)物種類(name)描沟,癥狀(symptom),年齡(age)鞭光, 病因(illness)
- 提供空參和帶參構(gòu)造方法
- 成員方法:
- 抽象方法癥狀(showSymptom)
- 普通方法基本信息(showMsg)
- 提供setXxx和getXxx方法
- 定義普通鴨子類(Duck)
- 提供空參和帶參構(gòu)造方法
- 重寫showSymptom方法吏廉,打印癥狀信息。
參考答案:
public class Test3 {
public static void main(String[] args) {
Duck duck = new Duck("鴨子", "感冒", "發(fā)燒", 2);
duck.showMsg();
duck.showSymptom();
}
}
/*
1.定義抽象家禽類(Poultry)
*/
abstract class Poultry {
// i.成員變量(私有):
private String name;
private String illness;
// 癥狀(symptom)
private String symptom;
// 年齡(age)
private int age;
// ii.成員方法: showSymptom
public abstract void showSymptom();
// 成員方法: showMsg
public void showMsg() {
System.out.print("動(dòng)物種類:" + name);
System.out.println(",年齡:" + age + "歲");
System.out.println("入院原因:" + illness);
}
// iii.提供空參和帶參構(gòu)造方法
public Poultry() {
super();
}
public Poultry(String name, String illness, String symptom, int age) {
this.name = name;
this.illness = illness;
this.symptom = symptom;
this.age = age;
}
// iv.提供setXxx和getXxx方法
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIllness() {
return illness;
}
public void setIllness(String illness) {
this.illness = illness;
}
public String getSymptom() {
return symptom;
}
public void setSymptom(String symptom) {
this.symptom = symptom;
}
}
// Duck 類
class Duck extends Poultry {
public Duck() {
}
public Duck(String name, String illness, String symptom, int age) {
super(name, illness, symptom, age);
}
@Override
public void showSymptom() {
System.out.println("癥狀為:" + getSymptom());
}
}
第四題:語法練習(xí)
語法點(diǎn):繼承
按步驟編寫代碼惰许,效果如圖所示:
-
編寫步驟:
- 模擬教學(xué)管理系統(tǒng)師生信息席覆。
- 定義Person類。
- 屬性:姓名啡省、年齡
- 構(gòu)造方法:無參構(gòu)造方法娜睛,有參構(gòu)造方法
- 成員方法:getXxx方法,setXxx方法卦睹,顯示基本信息showMsg方法
- 定義Teacher類畦戒,繼承Person
- 屬性:學(xué)科
- 構(gòu)造方法:無參構(gòu)造方法,有參構(gòu)造方法
- 成員方法:getXxx方法结序,setXxx方法障斋,講課方法
- 定義Student類,繼承Person
- 屬性:分?jǐn)?shù)
- 構(gòu)造方法:無參構(gòu)造方法,有參構(gòu)造方法
- 成員方法:getXxx方法垃环,setXxx方法邀层,考試方法
- 參考答案:
public class Test4 {
public static void main(String[] args) {
// i.創(chuàng)建老師對(duì)象t,并把名稱賦值為”王小平”,年齡賦值為30,工資賦值為8000
Teacher t = new Teacher("王小平", 30, "Java");
// iii.調(diào)用老師對(duì)象t的講解方法
t.teach();
// iv.創(chuàng)建學(xué)生對(duì)象 s,并把名稱賦值為”李小樂”,年齡賦值為14,成績賦值為90分.
Student s = new Student("李小樂", 14, 90);
// vi.調(diào)用學(xué)生對(duì)象 s 的考試方法
s.exam();
}
}
class Person {
// 名稱(name)
private String name;
// 年齡(age)
private int age;
// 空參構(gòu)造
public Person() {
}
// 帶參構(gòu)造
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// setXxx和getXxx方法
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;
}
}
/*
2.定義老師類(Teacher),繼承Person類
*/
class Teacher extends Person {
// course(科目)
private String course;
// 空參構(gòu)造
public Teacher() {
}
// 帶參構(gòu)造方法
public Teacher(String name,int age, String course) {
super(name,age);
this.course = course;
}
// 提供setXxx和getXxx方法
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
public void teach() {
System.out.println(getName() +"老師,講授"+course +"課");
}
}
/*
3.定義學(xué)生類(Student),繼承Person類
*/
class Student extends Person {
// score(成績)
private int score;
// 無參構(gòu)造
public Student() {
super();
}
// 帶參構(gòu)造
public Student(String name, int age,int score) {
super(name, age);
this.score = score;
}
// 提供setXxx和getXxx方法
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public void exam(){
System.out.println(getName()+"同學(xué),考試得了:"+ score +"分");
}
}
第五題:語法練習(xí)
語法點(diǎn):繼承
按步驟編寫代碼,效果如圖所示:
-
編寫步驟
- 模擬汽車網(wǎng)站信息遂庄。
- 定義汽車Auto類
- 屬性:品牌寥院,車長,價(jià)格
- 定義SUV繼承Auto類
- 屬性:小型車車長標(biāo)準(zhǔn)值:4295涛目,中型車車長標(biāo)準(zhǔn)值:5070秸谢。
- 定義判斷車型方法
- 判斷小型車:小于小型車車長標(biāo)準(zhǔn)值
- 判斷大型車:大于中型車車長標(biāo)準(zhǔn)值
- 判斷中型車:大于小型車車長標(biāo)準(zhǔn)值并且小于等于中型車車長標(biāo)準(zhǔn)值
- 測試類中,創(chuàng)建若干SUV對(duì)象霹肝,保存到集合估蹄,遍歷集合,輸出中型SUV沫换。
參考答案:
public class Test5 {
public static void main(String[] args) {
// 創(chuàng)建SUV對(duì)象
SUV suv1 = new SUV(5079, 750000);
SUV suv2 = new SUV(4813, 760000);
SUV suv3 = new SUV(4270, 127800);
SUV suv4 = new SUV(4545, 188800);
//添加到集合中
ArrayList<SUV> list = new ArrayList<>();
list.add(suv1);
list.add(suv2);
list.add(suv3);
list.add(suv4);
// 遍歷集合,查詢中型SUV
for (int i = 0; i < list.size(); i++) {
SUV suv = list.get(i);
if (suv.midSUV()){
suv.showMsg();
}
}
}
}
// 定義汽車類
class Auto {
private String type;
private double length;
private double price;
public Auto() {
}
public Auto(String type, double length, double price) {
this.type = type;
this.length = length;
this.price = price;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public void showMsg() {
System.out.println("車型:" + type);
System.out.println("\t價(jià)格:" + price);
System.out.println("\t車長:" + length);
}
}
// 定義SUV類
class SUV extends Auto {
// 車長標(biāo)準(zhǔn)
private int miniLength = 4295;
private int midLength = 5070;
public SUV(double length, double price) {
super("SUV", length, price);
}
// 判斷 小型車
public boolean miniSUV() {
return getLength() <= miniLength;
}
// 判斷 大型車
public boolean largeSUV() {
return getLength() > midLength;
}
// 判斷 中型車
public boolean midSUV() {
return getLength() > miniLength && getLength() <= midLength;
}
}