最近重温关于面向对象方面的知识,将重点记录下来。
1、组合实际上是聚集关系的一种特殊形式。一个对象可以被几个其他聚集对象所拥有。如果一个对象只归属于一个聚类对象,那么它和聚集对象之间的关系就成为组合。例如:“一个学生有一个名字”就是学生类Student与名字类Name之间的一个组合关系,而“一个学生有一个地址”是学生类Student与地址类Address之间的一个聚类关系,因为一个地址可以被多个学生所共享。
2、一般来说,应该一律提供一个为构造默认实例的公共无参构造方法。如果一个类不支持无参构造方法,要用文档写出原因。如果没有显式定义构造方法,就假定有一个空方法体的公共默认无参构造方法。如果不想让用户创建类的对象,可以在类中声明一个私有的构造方法,如
private Math(){}
3、构造方法永远都是实例方法,因为它是用来构造实例的,一个静态变量或方法可以从实例方法中调用,但是不能从静态方法中调用实例变量或方法。
4、要调用父类构造方法就必须使用关键字super,而且这个调用必须是构造方法的第一条语句。在子类中调用父类构造方法的名字会引起一个语法错误。
public Circle(double radius, String color, boolean filled){ super(color, filled); this.radius = radius; }
5、当构造一个子类对象时,子类构造方法会在完成自己的任务之前,首先调用他的父类的构造方法。如果父类继承自其他类,那么父类构造方法又会在完成自己的任务之前,调用它自己父类的构造方法。这个过程持续到沿着这个继承体系结构的最后一个构造方法被调用为止。这就是构造方法链。
6、如果子类中没有显式定义的构造方法,那么它默认的无参构造方法将被调用,如果该类有父类,那么它的默认无参构造方法将会自动调用父类的无参构造方法。此时,如果父类没有显示的定义无参构造方法但显式的定义了有参构造方法,那么程序将不能被编译。所以,最好能为每个类提供一个无参构造方法,以便于对该类进行拓展同时避免错误。