前幾天去一個公司面試冀惭,問到我c++的多態(tài)性怎么體現(xiàn)震叙。經(jīng)常提到的多態(tài),但是自己只是在書上看到的散休,也沒怎么在實(shí)際中用到媒楼,還是不理解啊。
面向?qū)ο蟮娜筇匦?/strong>: 封裝溃槐、繼承匣砖、多態(tài)。從一定角度來看,封裝和繼承幾乎都是為多態(tài)而準(zhǔn)備的猴鲫。
多態(tài)存在的條件:繼承对人,重寫,父類引用指向子類對象拂共。
多態(tài)意味著一個對象可以多重特征牺弄,可以在特定的情況下,表現(xiàn)出不同的狀態(tài)宜狐,從而應(yīng)對不同的屬性和方法.
class Father{
int a;
int b;
void doSomething(Father obj){
print(obj.method());
}
public static void mian(){
Father f=new Father();
f.doSomething(new Son);
f.doSomething(new Girl);
}
}
class Son extends Father{
void method(){
print("son");
}
}
class Girl extends Father{
void method(){
print("girl);
}
}
輸出結(jié)果為 son girl
用接口實(shí)現(xiàn)多態(tài)
interface name{
public String getName(); //接口中只聲明不實(shí)現(xiàn)
}
class A implements Name{
private String name ="class A";
public String getName(){ //實(shí)現(xiàn)getName方法
return name;
}
}
class B implements Name{
private String name ="class B";
public String getName(){ //實(shí)現(xiàn)getName方法
return name;
}
public static void main(String[] args){
Name obj = new A();
System.out.println(obj.getName());
}
}
輸出結(jié)果為 class A
一個類如果沒有實(shí)現(xiàn)接口中的所有方法势告,那么這個類必須被聲明為abstract(抽象的)。一個abstract類是不允許實(shí)例化對象的抚恒。