為什么要講多態(tài)性
最近發(fā)現(xiàn)大學(xué)時(shí)候?qū)W習(xí)的知識(shí)太不扎實(shí)了,連面向?qū)ο蟮娜筇匦远疾辉趺戳私饧崆ⅲ翱赡軐W(xué)了一個(gè)假的面向?qū)ο蟀伞?br> 所以打算寫一篇關(guān)于多態(tài)的博客戈稿。
什么是多態(tài)
多態(tài)指的是一類事物有多種形態(tài)。一般是抽象的形式讶舰,它們之間是繼承的關(guān)系鞍盗。
遇到的問題
直接切入正題,來講講我遇到了什么問題跳昼。
現(xiàn)在有一個(gè)父類:
public class People {
String name;
int age;
public People(String name, int age) {
this.name = name;
this.age = age;
}
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 class Man extends People{
String sex;
public Man(String name, int age, String sex) {
super(name, age);
this.sex = sex;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
我首先創(chuàng)建一個(gè)子類般甲,將所有屬性賦值到子類對象,然后將它轉(zhuǎn)成父類對象:
public class test {
public static void main(String[] args) {
People people = new Man("Tom", 18, "male");
Man man = (Man) people;
System.out.println(man.getName() + "," + man.getAge() + "," + man.getSex());
}
}
調(diào)試一下鹅颊,發(fā)現(xiàn)定義的people
里面裝的是 Man
類型敷存。
調(diào)試
但是在
people
里面卻又找不到子類Man
的屬性和方法。無子類屬性和方法
想要調(diào)用子類屬性和方法堪伍,必須轉(zhuǎn)化為父類锚烦。
Man man = (Man) people;
System.out.println(man.getName() + "," + man.getAge() + "," + man.getSex());
結(jié)論
1觅闽、子類轉(zhuǎn)化成父類,屬性不會(huì)消失涮俄,但是父類對子類的屬性不可見蛉拙。
2、想要調(diào)用子類的屬性彻亲,需要轉(zhuǎn)化類型孕锄。