关于Java的多态

关于Java的多态,第1张

关于多态

一,含义
所谓多态,是指方法有两种形态,在编译期有一种形态,运行期有一种形态,编译期叫做静态绑定,运行期叫做动态绑定。
二,多态存在的三个必要条件

1,继承,

(可以看看我上一篇关于继承的博客)

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,对于子类中有的方法,而父类中没有的方法,会编译错误。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/801530.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-07
下一篇2022-05-07

发表评论

登录后才能评论

评论列表(0条)

    保存