前几天去一个公司面试,问到我c++的多态性怎么体现。经常提到的多态,但是自己只是在书上看到的,也没怎么在实际中用到,还是不理解啊。
面向对象的三大特性: 封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。
多态存在的条件:继承,重写,父类引用指向子类对象。
多态意味着一个对象可以多重特征,可以在特定的情况下,表现出不同的状态,从而应对不同的属性和方法.
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);
}
}
输出结果为 son girl
用接口实现多态
interface name{
public String getName(); //接口中只声明不实现
}
class A implements Name{
private String name ="class A";
public String getName(){ //实现getName方法
return name;
}
}
class B implements Name{
private String name ="class B";
public String getName(){ //实现getName方法
return name;
}
public static void main(String[] args){
Name obj = new A();
System.out.println(obj.getName());
}
}
输出结果为 class A
一个类如果没有实现接口中的所有方法,那么这个类必须被声明为abstract(抽象的)。一个abstract类是不允许实例化对象的。