JAVA 多态
面向对象程序设计的三大支柱是封装、继承和多态。
概念
多态(baiPolymorphism)按字面的意思就是“多种状态”,指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。
首先定义两个有用的术语:子类型和父类型。实际上一个类定义了一种类型。子类定义的类型称为子类型(subtype), 而父类定义的类型称为父类型(supertype)。
举个例子:
球场上一共有三种运动器材:
A:篮球
B:足球
C:网球
这里所表现的的就是多态。篮球、足球、网球都有一个共同 的特性——它们都是球类。但它们又都是球的子类。我们只是通过球这一父类就能够引用不同的子类,这就是多态。
实现形式
在Java中有两种形式可以实现多态:继承和接口。
本文基于继承来实现多态
仍然是上面的例子。定义父类为Ball, 三个子类分别为baskeball、football、tennisball。
父类:
public class Ball {
public void Out() {
System.out.println("play ball");
}
}
子类:
1、篮球:
public class basketball extends Ball{
public void Out() {
System.out.println("play basketball");
}
}
2、足球:
public class football extends Ball{
public void Out() {
System.out.println("play football");
}
}
3、网球:
public class tennisball extends Ball{
public void Out() {
System.out.println("play tennisball");
}
}
对其父类和子类的多态进行测试:
public class Test {
public static void main(String[] args) {
Ball a1 = new basketball();
Ball a2 = new football();
Ball a3 = new tennisball();
a1.Out();
a2.Out();
a3.Out();
}
}
可以得到结果:
由此可知多态是同一个行为具有多个不同表现形式或形态的能力。
*instanceof关键字
通过instanceof用来判断某个对象是否属于某种数据类型。
public class Test {
public static void main(String[] args) {
Ball a1 = new basketball();
Ball a2 = new football();
Ball a3 = new tennisball();
if(a1 instanceof basketball) {
System.out.println("a1 是属于 basketball");
}
else {
System.out.println("a1 不属于 basketball");
}
}
}