1.封装的意义有哪些?

答:

  1. 将对象成员保护起来,使用接口对外公开,安全性更高。
  2. 读取、修改对象属性更加方便,更具有灵活性。
  3. 增加、删除对象属性在对应类中进行操作即可,不影响其他类,可维护性好。

2.final关键字的作用有哪些?

答:

  1. 修饰静态变量、实例变量和局部变量,可使其分别成为静态常量、实例常量和局部常量,用于表示固定的常量值,并且只能在定义时赋初始值。
  2. 用于修饰类,被final修饰的类不能被继承,没有子类,起到终止继承的作用。
  3. final修饰类中方法,则此方法不允许被覆盖,即@override标注不起作用。

3. 简述覆盖与重载的区别。

答:

        (1)重载是在一个类中可以定义具有相同名字但参数不同的多个方法,不同方法之间的参数个数、类型、排列顺序不同即可构成重载,只要根据参数列表中的信息传入对应参数,两个同名方法均可以被执行。

        (2)覆盖作用于父类与子类中同名且参数相同的方法添加@override标注时,则父类中此方法会被覆盖,只有子类中此方法可以被运行,父类中此方法不再起作用。

        (3)重载要求同名方法的参数列表不同,覆盖要求方法同名且参数列表相同。

        (4)覆盖只能由一对方法产生关系,重载是多个方法之间的关系。

        (5)覆盖关系中,调用方法根据对象类型决定;重载关系根据调用时的实参列表与形参列表选择要执行的方法体。

4. 写一个冒泡排序算法。

解:

        以一个含有10个正整数并无序存放的整型数组Arr按非递减顺序进行排序为例,冒泡排序算法如下所示:

public class Sort{
        public static void main(String[ ] args){
                int[ ] Arr = {1,3,2,9,8,6,4,5,10,7};
                for(int i = 0; i < Arr.length; i++){
                      for (int j = 0; j < Arr.length - 1- i; j++){
                              int temp = 0;
                              if(Arr[j] > Arr[j + 1]){
                                      temp = Arr[j + 1];
                                      Arr[j + 1] = Arr[j];
                                      Arr[j] = temp;                            }
                      }
               }      }
}