关于构造器:
If a subclass constructor invokes a constructor of its superclass, either explicitly or implicitly, you might think that there will be a whole chain of constructors called, all the way back to the constructor of Object. In fact, this is the case. It is called constructor chaining, and you need to be aware of it when there is a long line of class descent.
Another use of Constructor is to initialize member fields.
封装和继承是多态的基础,而多态是面向对象语言的核心特性.引用Charlie Calverts对多态的描述 : 多态是允许你将父对象设置成为一个或者更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式动作.简单的说,就是一句话:允许将子类对象的指针赋值给父类类型的指针(引自百度百科).
多态就可以将不同类型的子类对象在编写期间全部当作一个类型来处理,这样的好处是可以更好的利用容器来存放对象实体.而且在编写时,可以全部当作一种类型来操作,可以增加编写时代码的通用性以及后期可维护(更改)性.
但要记住一条:在把子类实体对象当作父类对象来处理时,只能调用从父类继承来的方法与属性,或者是覆盖父类的方法(最好不要去覆盖从父类继承来的属性).但不能是子类重载的方法.如果要使用,可以进行强制类型转换成子类的相应对象(转换前最好使用 instanceof 关键词来判断,避免强转错误),这样就可以调用子类独有的方法与属性.(重载的方法也是属于子类独有的方法).
关于"绑定": 将一个方法调用同一个方法主体连在一起就称为"绑定".根据绑定时机不同,分为"静态绑定"与"动态绑定".
"静态绑定":在程序编译期间,即程序运行前执行的绑定,称为静态绑定;
"动态绑定":在程序运行期间执行的绑定称为动态绑定;
对于一个引用型变量,在编译期间,编译器会按照此变量所声明的类型来进行检查处理;而在运行期间,JAVA虚拟机会按照此引用变量实际所引用(指向)对象的方法与调用方法进行绑定.