上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

java中的多态

guduadmin251月前

①定义:

Java的多态是指同一个方法在不同对象上有不同的行为。它是面向对象编程的一个重要特性,通过多态可以实现代码的灵活性和可扩展性。

在Java中,多态的实现主要依靠两个机制:继承和方法重写。

  1. 继承:子类可以继承父类的属性和方法。当子类继承父类后,可以使用父类的引用来引用子类的对象。这样,通过父类的引用调用同名方法时,实际上会调用子类中重写的方法。

  2. 方法重写:子类可以重写父类的方法,即在子类中重新定义与父类中同名、同参数列表、同返回类型的方法。当父类的引用指向子类的对象时,调用该方法时会执行子类中的方法。

多态的优点:

  • 提高代码的灵活性和可扩展性:通过多态,可以在不修改原有代码的情况下,通过增加新的子类来扩展程序的功能。

  • 简化代码的编写和维护:通过多态,可以使用父类的引用来统一处理不同子类的对象,减少了代码的重复性。

  • 提高代码的可读性:通过多态,可以使代码更加简洁、清晰,易于理解和维护。

    ②方法的多态

    方法的重载和重写就体现了多态

    ③对象的多态

    (1)一个对象的编译类型和运行类型可以不一致

    Animal animal = new Dog();

    编译类型为Animal,运行类型为Dog;

    (2)编译类型在定义对象时,就确定了,不能改变;

    (3)运行类型可以变化;

    Animal animal = new Dog();//编译类型为animal,运行类型为dog;
    animal = new Cat();//编译类型为animal,运行类型为cat;

    (4)编译类型看等号的左边;运行类型看等号的右边;

    ④向上转型

    (1)本质:父类的引用指向了子类的对象;

    (2)语法:父类类型        引用名=new        子类类型();

    Animal animal = new Dog();

    (3)特点:编译类型看左边,运行类型看右边;

    可以调用父类中的所有成员(需遵守访问权限),

    不能调用子类中特有成员,(因为在编译阶段,能调用哪些成员,是由编译类型决定的)

    //animal.catchMause();错误,因为这是子类特有的方法

    最终运行效果看子类(运行类型)的具体实现;即调用方法时,按照从子类(运行类型)开始查找重写或重载的方法,如果没有的话,就去父类中找,直到Object类;

    ⑤向下转型

    (1)语法:子类类型        引用名=(子类类型)父类引用;

    Animal animal = new Dog();
    Dog dog = (Dog) animal;

    (2)只能强转父类的引用,不能强转父类的对象;

    (3)要求父类的引用必须指向的是当前目标类型的对象;

    (4)当向下转型后,可以调用子类类型中的所有成员;

    ⑥注意事项

    (1)属性没有重写之说,属性的值只看编译类型(等号的左边);

    (2)instanceOf比较操作符,用于判断对象的运行类型,是否为XX类型或XX类型的子类型

网友评论

搜索
最新文章
热门文章
热门标签
 
 梦见大水流淌是什么意思  1993年属什么生肖年  梦见自己拉了一堆大便是什么预兆