1 多态包括方法的多态和对象的多态 2 方法的多态主要是指方法的重写和重载。 3 我在这里主要解释一下对象的多态:一个对象,多种形态。 4 对象多态的基础: 子类对象可以当做父类对象来看. 例如:Animal a= new Bird(); 5 对象多台的核心定理: a。 如果我们吧子类对象当做父类对象来看,那么我们就只能访问负累中已有定义的属性和方法(不能访问子类扩展的属性和方法) b。 如果子类吧负累的方法覆盖了,在把子类对象当做负累对象来看,去调用该方法,调用的是覆盖之后的方法(子类中定义的方法)。 6 例如:Animal接口里面有一个eat ()方法 现在有俩个实现类 horse 和 tiger 类。这俩个类分别重写了eat()方法 现在我们new 俩个对象 如: Animal animal1= new horse(); animal1.eat(); 调用的就是马的eat方法。执行结果是马吃草; Animal animal2 = new tiger() ;animal2.eat(); 这里调用的就是老虎的eat方法,执行结果就是老虎吃肉;
Java是面向对象的语言,多态性是面向对象程序设计代码重用的一个最强大机制,动态性的概念也可以被说成“一个接口,多个方法”。Java实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制,主要体现在继承和接口实现两方面,详见例子: 继承实现多态例如: class A{ method(){ System.out.println("a");} } class B extends A{ method(){ System.out.println("b");}} class test{ main(){ A test = new B(); test.method();//执行以后输出的是:b。解释就是:父类引用(A)指向子类对象(B),这个引用调用的是子类的方法,而不是父类A的方法; }} 继承实现多态其实原理类似: interface A{ method();} class B implements A{ method(){ System.out.println();}} class test{ main(){ A test = new B(); test.method();//此处便会使用java的多态,B实现了A,虽然=前面是A test,但实际上生成的确是B的对象,所以调用它的方法,同继承中的父类对象指向子类对象原理相同,只是此处为继承; }} 多态的好处非常明显啊,有人总结: 1.可替换性。多态对已存在的代码具有可替换性。 2.可扩充性。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。 3.接口性。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。 4.灵活性。它在应用中体现了灵活多样的操作,提高了使用效率。 5.简化性。多态简化了对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。值得注意的是,多态并不能够解决提高执行速度的问题,因为它基于动态装载和地址引用,或称动态绑定。