多态
1.多态相关概念
面向对象的程序设计特点:多态、继承、封装
动态绑定:在运行时根据对象类型调用相应的方法。
后期绑定:在运行时根据对象的类型进行绑定。
java中除了static方法和final方法(private方法属于final方法),所有方法都是后期绑定。域和静态方法不可多态,因为是在编译期初始化 。
多态(也被成为动态绑定、后期绑定和运行时绑定):将整个继承体系的对象作为同一类对象使用,代码可以毫无差别的应用在这些类上。
由于有多态机制,可以根据自己的需要在系统中添加任意多的新类型,但不用改变相应的方法,这样的程序是可扩展的。
2.向上转型
向上转型:将派生类作为基类使用。用以基类为参数的方法应用在派生类上。
3.组合和继承
在建立新类时应该首先考虑采用组合的方法,因为在程序运行中可以改变引用,但是无法改变类的继承关系。可以说,组合更具有灵活性。
4.一段有趣的程序:
public class RandomShapeGenerator {
private Random rand = new Random(47);
public Shape next() {
switch(rand.nextInt(3)) {//随机产生数字,决定生成何种对象
default:
case 0: return new Circle();
case 1: return new Square();
case 2: return new Triangle();
}
}
}
Shape[] s = new Shape[9];
for(int i = 0; i < s.length; i++) {
s[i] = gen.next();//为随机生成的对象产生一个引用
}