zoukankan      html  css  js  c++  java
  • 《java JDK7 学习笔记》之对象封装

    1、构造函数实现对象初始化流程的封装。方法封装了操作对象的流程。java中还可以使用private封装对象私有数据成员。封装的目的主要就是隐藏对象细节,将对象当做黑箱子进行操作。

    2、在java命名规范中,取值方法的名称形式是固定的,也就是以get开头,之后接上首字母大写的单词。

    3、如果没有声明权限修饰的成员,只有在相同包的类程序代码中才可以直接存取,也就是“包范围权限”。如果想在其他包的类程序代码中存取某包的类或对象成员,则该类或对象成员必须是公开成员,在java中要使用public加以声明。

    4、创建对象时,数据成员就会初始化,如果没有指定初始值,则会使用默认值初始化,基础类型默认值为0;布尔型默认为false;引用类型默认值为null。

    5、如果定义类时,没有撰写任何构造函数,编译程序就会自动加入一个无参数、内容为空的构造函数,成为默认构造函数。可以定义多个构造函数,只要参数类型或个数不同,这称为重载构造函数。

    6、定义方法时也可以进行重载,可为类似功能的方法提供统一名称,但根据参数类型或个数的不同调用对应的方法。

         编译程序在处理重载方法时,会依照以下顺序来处理:

         (1)还没有装箱动作前可符合自变量个数与类型的方法;

         (2)装箱动作后可符合自变量个数与类型的方法;

         (3)尝试有不定长度自变量并可符合自变量类型的方法;

         (4)找不到合适的方法,编译错误。

    7、除了被声明为static的地方外,this关键字可以出现在类中的任何地方,在对象建立后为“这个对象“的参考名称。this()代表了调用另一个构造函数,至于调用那个构造函数,则视调用this()时给的自变量类型与个数而定。

    8、如果对象数据成员被声明为final,但没有明确使用=指定值,那表示延迟对象成员值的指定,在构造函数执行流程中,一定要有对该数据成员指定值的动作,否则编译错误。

    9、被声明为static的成员,不会让个别对象拥有,而是属于类。

    10、java程序设计领域,早就有许多良好命名习惯,没有遵守习惯并不是错,但会造成沟通与维护的麻烦。以类命名实例来说,首字母是大写,以static使用习惯来说,是通过类名称与“.”运算符来存取。

    11、在static方法或区块中不能出现this关键字。static方法中不能用非static数据或方法成员。

    12、import static 语法是为了偷懒,单别偷懒过头,要注意名称冲突问题,有些名称冲突编译程序可通过以下顺序来解析:

          (1)局部变量覆盖:选用方法中的同名变量、参数、方法名称;

          (2)成员覆盖:选用类中定义的同名数据成员、方法名称;

          (3)重载方法比较:使用import static 的各个静态成员,若有同名冲突,尝试通过重载判断。

    13、在JDK5之后支持不定长度自变量,为编译程序提供方便,展开后变为数组。使用不定长度自变量时,方法上声明的不定长度参数必须是参数列最后一个,使用两个以上不定长度自变量也是不合法的。

    课后练习选择题:

    1、public class Some {

               private Some  some;

               private Some (){}

               public static Some create(){

                     if(some == null){

                         some = new Some();

                     }

                     return some;

               }

         }

       以上语句描述正确的是:编译失败。

    注:在声明为static的方法或区块中不能调用非static成员或方法。

     

    2、int[] scores1 = {88,81,74,68,78,76,77,85,95,93};

         int[] scores2 = Arrays.copyOf(scores1,scores1.length);

      其中Array完全吻合名称为java.util.Arrays,以下描述正确的是:copyOf()是static成员。

     

    3、public class Some {

               public int x;

               public Some(int x){

                     this.x = x;

               }

      }

    以下描述正确的是:创建Some时,只能使用new Some(10)形式。

     

    4、public class Some {

               public int x;

               public Some(int x){

                     this.x = x;

               }

      }

    使用Some s = new Some(10)后,可使用s.x取得。

     

    5、public class Some {

               private int x;

               public Some(int x){

                     this.x = x;

               }

      }

    描述正确的是new Some(10),对象成员x的值为10.

     

    6、package cc.openhome.util;

        public class Some {

               pubilc int x;

               public Some(int x){

                     this.x = x;

               }

       }

    以下描述正确的是:cc.openhome.util包中其他程序代码可以new Some(10)。

     

    7、public class Some {

               private final int x;

               public Some(){}

               public Some(int x){

                     this.x = x;

               }

    }

    以下描述正确的是:编译失败。

    注:成员声明为final时,必须直接初始化或者在构造函数中赋值,调用无参构造器没有给final的成员赋值所有编译失败。

     

    8、public class Some{

              public static int sum(int…  number ){

                     int sum = 0;

                     for(int i=0;i<number.length;i++){

                          sum += number[i];

                     }

                     return sum;

             }

    }

    以上说法正确的是:编译失败,因为不定长度自变量只能用增强式for循环语法。(是不是正确的?)

     

    9、public class Some{

               public static void someMethod(int i){

                     System.out.println(“int 版本被调用”);

               }

               public static void someMethod(Integer integer){

                     System.out.println(“Integer 版本被调用”);

               }

    }

    以上描述正确的是:Some.someMethod(1);显示“int 版本被调用”

     

    10、public class Main{

                 public int some(int… numbers){

                       int sum=0;

                       for(int number : numbers){

                            sum += number;

                       }

                        return sum;

                 }

                 public static void main(String []  args){

                        System.out.println(sum(1,2,3));

                 }

    }

    以下说法正确的是:编译失败。

  • 相关阅读:
    PHP文件系统处理
    JavaScript数据类型
    JavaScript操作符
    JavaScript语法
    在 HTML 中使用JavaScript
    JavaScript概述
    PHP数组
    PHP基本语法
    Eclipse署动态web项目方法
    xml约束技术之dtd
  • 原文地址:https://www.cnblogs.com/wanghongyun/p/6202578.html
Copyright © 2011-2022 走看看