类的继承
继承在面向对象的开发中运用非常广泛,它能使程序架构具有一定的弹性。在程序中复用一些已经定义完善的类,不仅可以减少日记开发周期,也能提高日记的可维护性和可扩展性。
继承的基本思想是基于某个父类的扩展,创建出一个新的子类,子类可以继承父类原有的属性和方法,也可以增加新的属性和方法,或者直接重写父类中的某些方法为己用。
比如,创建一个四边形类,平行四边形类,我们就可以说平行四边形类继承了四边形类,平行四边形继承了四边形具有的属性和方法,并基于四边形类创建了属于自己的特有属性和方法(如对边平行且相等)。
在实例化子类对象时,会依据父类的级别依次对父类进行初始化。也就是说,实例化子类对象时,首先要实例化父类对象,然后再实例化子类对象。
class Parent{ //父类
Parent(){
System.out.println("调用父类的Parent()构造方法");
}
}
class SubParent extends Parent{ //子类继承父类
SubParent(){
System.out.println("调用子类的SubParent()构造方法");
}
}
public class sl1002 extends SubParent{
sl1002(){
System.out.println("调用子类sl1002()的构造方法");
}
public static void main(String[] args) {
sl1002 s = new sl1002(); //创建实例对象,对应会对继承的父类进行初始化
}
}
程序运行结果:
调用父类的Parent()构造方法
调用子类的SubParent()构造方法
调用子类sl1002()的构造方法
方法重载
顾名思义,方法的重载就是在同一类中允许同时存在一个或多个的同名方法,通过设置不同的形参个数或参数类型来实现重载,具体如下:
public class OverLoadTest {
public static int add(int a, int b) { // 定义一个方法1
return a + b;
}
// 定义与第一个方法相同名称、参数类型不同的方法2
public static double add(double a, double b) {
return a + b;
}
public static int add(int a) { // 定义与第一个方法参数个数不同的方法3
return a;
}
public static int add(int a, double b) { // 定义一个成员方法4
return 1;
}
// 这个方法与前一个方法参数次序不同5
public static int add(double a, int b) {
return 1;
}
public static void main(String args[]) {
System.out.println("调用add(int,int)方法:" + add(1, 2));
System.out.println("调用add(double,double)方法:" + add(2.1, 3.3));
System.out.println("调用add(int)方法:" + add(1));
}
}
程序输出结果:
调用add(int,int)方法:3
调用add(double,double)方法:5.4
调用add(int)方法:1
上面的实例中定义了5个方法,其中方法1,2参数类型不同且方法返回值也不同,所以构成了重载关系;方法1,2与方法3相比,方法3参数个数与前两个不同,也构成的重载关系;方法4,5相比,除了参数顺序外其余都相同,依据参数顺序也可以判断方法4,5构成重载关系。
☆虽然方法重载中可以使两个方法的返回值类型不同,但只有返回类型不同并不足以区分两个方法的重载,仍需要通过参数个数和参数类型来设置。
综上所述,可以总结出构成方法重载的条件:编译器通过利用方法名称、方法中各参数类型和参数个数以及参数的顺序来确定类中的方法互相独立。通过重载的方法可以使方法以统一名称被管理,使程序代码有序。