
一,含义
所谓多态,是指方法有两种形态,在编译期有一种形态,运行期有一种形态,编译期叫做静态绑定,运行期叫做动态绑定。
二,多态存在的三个必要条件
(可以看看我上一篇关于继承的博客)
2,重写,方法的执行标准取决于子类是否重写此方法,子类重写的话就调用子类的方法,若未重写,就调用父类的方法,且父类必须有此方法。
3,父类型引用指向子类型对象:Father d=new Child();
三,多态的效果
1,对于指向子类对象的父类来说,在编译期间只能调用父类方法,不能直接调用子类的方法。
2,对于父子类都有的非静态方法来说,指向子类的父类对象最终调用子类的重写方法。
3,对于父子类都有的静态方法来说,指向子类的父类对象最终调用父类中的方法,与指向的对象无关。
4,多态可以屏蔽不同子类的差异性而编写通用代码,从而产生不同的效果。
public class Animal
{
public int name;
public Animal()
{ }
//父类的方法
public void eat()
{
System.out.println("动物吃食物");
}
public void move()
{
System.out.println("动物移动");
}
}
class Dog extends Animal
{
public Dog()
{ }
//子类的方法
public void eat()
{
System.out.println("小狗吃骨头");
}
/*public void breath()
{
System.out.println("2");
}*/
//父类中没有的方法,不能在子类中重写,否则会编译错误。
}
class Testc
{
public static void main(String[] args)
{
Animal ar=new Dog();
//父类型引用指向子类型对象
ar.eat();
//对于父子类都有的非静态方法来说,调用子类的重写的方法。
ar.move();
//父类中有,但子类中没有,所以最终调用父类的方法。
}
}
运行结果
ps,对于子类中有的方法,而父类中没有的方法,会编译错误。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)