方法的重载,是指在同一类或其父类中存在多个相同名字的方法。这些方法的参数表不同,当实例对象调用该方法时,会根据传递的参数选择相应的方法。参数表包括参数类型、个数以及顺序。
构造方法同样存在重载的概念。当类中存在多个构造方法时,根据创建实例对象时传递的参数,调用相应的构造方法。另外,在构造方法的定义中,还可以调用本类的其他构造函数,此时使用关键字 this 。this表示构造方法自身的名称,根据this后面的小括号中参数表,来确定调用的构造方法。
this还有另外一种用法。在类的方法中访问类的成员变量时,使用 this.成员变量 指明操作对象。
在子类中编写了一个方法,该方法的方法名、参数表和返回类型与父类中的某一方法完全一致,此时在子类中调用方法将会屏蔽父类中的该方法,这是方法的重写。使用方法重写可以使从父类继承的方法执行与父类不同的操作。
在子类中又想使用被隐藏的父类的方法时,可以使用 super.方法名。
另外,super 关键字还能帮助子类调用父类的构造方法。定义子类时,子类不会继承父类的构造方法。在定义子类的构造函数时,实际上,系统会在代码的最前端隐性地写上 super() ,它代表调用一次父类中不带参数的构造方法(若父类中不存在不带参数的构造方法,此时编译会报错)。如果我们显性地写出 super(参数表),原先隐形存在的 super() 则会被屏蔽,这时就可以使用 super(参数表) 调用自己希望的父类的构造函数。需要注意的是,super 的使用必须在构造函数的开头位置。这是因为,Java 处于安全性考虑,要求一个父类的对象要在子类运行前完全初始化。