类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类称为子类,现有类称为父类。子类继承父类的属性和方法,使得子类对象(实例)具有父类的特征和行为。
在类的继承中,需要注意一些问题,具体如下。
(1)在Java中,类只支持单继承,不允许多重继承。也就是说,一个类只能有一个直接父类,例如下面这种情况是不合法的。
class A{}
class B{}
class C extends A,B{} // C类不可以同时继承A类和B类
(2)多个类可以继承一个父类,例如下面这种情况是允许的。
class A{}
class B extends A{}
class C extends A{} // B类和C类都可以继承A类
(3)在Java中,多层继承也是可以的,即一个类的父类可以再继承另外的父类。例如,C类继承自B类,而B类又可以继承自A类,这时,C类也可称为A类的子类。例如,下面这种情况是允许的。
class A{}
class B extends A{} // B类继承A类,B类是A类的子类
class C extends B{} // C类继承B类,C类是B类的子类,同时也是A类的子类
(4)在Java中,子类和父类是一种相对概念,一个类可以是某个类的父类,也可以是另一个类的子类。例如,在第(3)种情况中,B类是A类的子类,同时又是C类的父类。
在继承中,子类不能直接访问父类中的私有成员,子类可以调用父类的非私有方法,但是不能调用父类的私有成员。
什么是多维数组?怎样定义多维数组?
多维数组可以简单地理解为在数组中嵌套数组。在程序中,比较常见的多维数组是二维数组,接下来本节将针对二维数组进行详细讲解,我们以统计学校各个班级学生的考试成绩,来实现。
二维数组可以被看作是特殊的一维数组,其定义有很多方式,接下来针对几种常见的方式进行详细讲解,具体如下。
第一种方式,指定二维数组的长度和每个数组的元素个数,其基本语法格式如下:
int[][] arr=new int[3][4];
上面的代码相当于定义了一个3*4的二维数组,这个二维数组的长度为3,我们可以将它看成3个int[]类型的一维数组,每个一维数组中的元素又是一个长度为4的一维数组。接下来通过一个图来表示这种情况,如下图所示。
第二种方式,只指定二维数组的长度,不确定每个数组的元素个数,其基本语法格式如下:
int[][] arr =new int[3][];
第二种方式和第一种类似,只是数组中每个元素的长度不确定,接下来通过一个图表来表示示这种情况,如下图所示。
第三种方法,直接使用嵌套大括号{},对二维数组初始化赋值,其基本语法格式如下:
int[][] arr ={{1,},{3,4,5,6},{7,8,9}};
上面的二维数组定义了三个元素,这三个元素都是数组,分别为{1,2}、{3,4,5,6}、{7,8,9},接下来通过下图来表示这种情况:
对二维数组中元素的操作是通过角标的方式来完成的,具体示例代码如下:
arr[0][1]; //获取二维数组中第一个元素瓶的第二个元素
arr[0][1=1]; //对二推数组中第一个元家组的第二个元索赋值成修改
接下来通过一个统计公司三个销售小组中每个小组的总销售额,以及整个公司销售额的案例来熟悉二维数组的使用,如下所示。
Example25.java
public class Example25 {
public static void main(String[] args) { //定义一个长度为3的二维数组
int[][] arr =new int[3][]; //为数组的元素赋值
arr[0] =new int[] {11, 12 } ;
arr[1] =new int[] { 21, 22, 23 };
arr[2] =new int[] {31,32,33, 34};
int sum =0; //定义变量记录总销售额
for (int i<arr.length;i++) { //遍历数组元素
int groupSum =0; //定义变量记录小组销售总额
for (int j =0; j <arr[i].length; j++) {
groupSum +=arr[i][j];
}
sum +=groupSum; //累加小组销售额
System.out.println("第“+(i+1)+"小组销售额为:"
+groupSum+"万元。");
}
System.out.println(”总销售额为:“+sum+”万元,“);
}
}