什么是多态

在面向对象语言上多态是

多态(Polymorphism)按字面的意思就是"多种状态"。在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie Calverts对多态的描述--多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作(摘自"Delphi4 编程技术内幕")。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数实现的。

java中多态是指

多态又叫动态绑定是指“在运行期间”(而非编译期间)来判断所引用的对象的实际类型,根据其实际类型调用其相应的方法。就是new出来什么对象就调用那个对象的方法。
--------
多态的三个条件:1.要有继承。2.要有重写。3.父类引用指向子类对象。
三个条件缺一不可, 只针对与方法,对成员变量无效的。

如下class Animals {
jiaosheng() {
System.out.print("动物叫声");
}
}
class Cat extends Animals {
jiaosheng() {
System.out.print(" 猫叫声");
}
}
public class Text { //定义一个测试类
public void f(Animals aa) {
aa.jiaosheng();
}
public static void main(String args[]) {
Animals c = new Cat();//父类引用指向子类对象
Animals a = new Animals()//实例化一个父类对象
Cat cc = new Cat();//实例化一个子类对象
c.jiaosheng();
a.jiaosheng();
cc.jiaosheng();
Text t = new Text();//实例化一个测试类
t.f(cc);
}
}
控制台:猫叫声 动物叫声 猫叫声 猫叫声

多态体现为两种方式:重写和重载
重写是父子类之间多态的体现,它的好处就是可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
重载是本类之间多态的体现,它的好处是可以满足用户在针对同一对象可以调用同一方法的不同功能体现,以最大限度适应用户的不同需求。

你可能感兴趣的:(入门java)