Wordpress全站404,中软国际软件培训怎么样,数据库wordpress搬家,自媒体平台有哪些多态#xff08;polymorphism): 不同的对象#xff0c;调用同一个方法#xff0c;对象的行为状态可能完全不同#xff0c;也就是说#xff0c;有多种状态#xff0c;这种情况就叫做多态。
以下的例子里#xff0c;同样都是人吃饭这个方法#xff0c;但是不同的人使用吃…多态polymorphism): 不同的对象调用同一个方法对象的行为状态可能完全不同也就是说有多种状态这种情况就叫做多态。
以下的例子里同样都是人吃饭这个方法但是不同的人使用吃饭这个方法时行为可能完全不同也就是说有多种吃饭状态。 以下用示例代码来说明
package polymorphism;public class Animal { //定义一个Animal作为父类public void shout (){ //定义父类里的一个方法System.out.println(动物叫);}
}
class Dog extends Animal{ //定义了一个Dog子类public void shout(){System.out.println(旺旺旺);//针对dog重写了父类animal里的shout方法}public void seeDoor(){System.out.println(看门中。。。);}
}class Cat extends Animal{//定义了一个cat子类public void shout(){System.out.println(喵喵喵);//针对cat重写了父类animal里的shout方法}
}package polymorphism;public class TestPolym {public static void main(String[] args) {animalCry(new Dog());//实参是子类对象doganimalCry(new Cat());//实参是子类对象dog}static void animalCry(Animal a){ //形参是父类Animal 的对象aSystem.out.println(TestPolym.animalCry);a.shout();//虽然在这里看到的是同一个shout方法//但会根据实际的传入的Animal的不同dog或者cat)而运行其子类重写shout方法//这就是所谓的多态}
}运行结果 多态的要点: 1.多态是方法的多态不是属性的多态多态与属性无关)。
在上面的示例中与多态有关的都是方法而不是变量或属性这很明显。 2.多态的存在要有3个必要条件:继承方法重写父类引用指向子类对象。
在上面的示例中要实现多态继承方法重写都出现了这很明显。
而父类引用指向子类对象很明显就是
(Animal a){ //形参是父类Animal 的对象a
但是实际引用时传入的是子类对象
animalCry(new Dog());//实参是子类对象dog
animalCry(new Cat());//实参是子类对象dog
这就是所谓父类引用指向子类对象。 3.父类引用指向子类对象后用该父类引用调用子类重写的方法此时多态就出现了。
在上面的示例中就是这一段
a.shout();//虽然在这里看到的是同一个shout方法//但会根据实际的传入的Animal的不同dog或者cat)而运行其子类重写shout方法//这就是所谓同一个父类方法在运行不同子类对象时呈现多种状态多态
引入多态降低了不同类不同代码块之间的耦合方便后续的修改和维护。这可以通过设想这种情况来理解如果没有这种多态机制要实现同样的效果只能够分别调用子类对象来做那么每次修改子类TestPolym类都要同步做修改。