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));

}

}

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

《java JDK7 学习笔记》之对象封装的更多相关文章

  1. 《java JDK7 学习笔记》之类和对象

    1.在java中,要产生对象必须先定义类,类是对象的设计图,对象是类的实例.类定义时使用class关键词,建立实例对象要使用new关键词.以类名声明的变量,称为参考名称.参考变量或直接叫参考. 2.想 ...

  2. 《java JDK7 学习笔记》之Collection

    一.使用Collection 收集对象 1.认识Collection架构 Java SE提供了满足各种需求的API,在使用这些API前,建议先了解其继承与接口操作架构,才能了解何时使用哪个类,以及类之 ...

  3. 《java JDK7 学习笔记》之异常处理

    1.java中所有的错误都会被打包为对象,JVM会尝试执行try区块中的程序代码,如果发生错误,执行流程会跳离错误发生点,然后比较catch括号中声明的异常类型,是否符合被抛出的错误对象类型,如果是的 ...

  4. 《java JDK7 学习笔记》之继承与多态

    1.面向对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承.应该正确判断使用继承的时机及继承之后灵活的运用多态,才是学习继承时的重点. 2.程序代码重复在程序设计上,就是 ...

  5. 《java JDK7 学习笔记》之接口与多态

    1.对于"定义行为"也就是接口,可以使用interface关键字定义,接口中的方法不能操作,直接标示为abstract,而且一定是public修饰的. 类要操作接口,必须使用imp ...

  6. 《java JDK7学习笔记》之跨平台与路径设置

    Platforms表示Solaris.Linux.Windows各种操作系统平台,在这些平台上架构了java Virtaul Machine,简称JVM,Java虚拟机. Java虚拟机可以让java ...

  7. 《java jdk7学习笔记》之java三大平台

    Sun公司在2006年底,就将三大平台正名为java SE.java EE和java ME.也有很多人习惯用J2SE.J2EE和J2ME. 1.java SE java SE(标准版)是各应用平台的基 ...

  8. 《Java JDK7 学习笔记》课后练习题1

    1.()组织负责监督审查Java相关技术规格的演进. A. JCP B. Apache C. EU D. W3C 2.Java技术规格必须以()正式文件提交审查. A. RFC B. JSR C. I ...

  9. 《Java JDK7 学习笔记》课后练习题2

    1.如果在hello.java中撰写以下的程序代码: public class Hello {     public static dmain(String[]args) {          Sys ...

随机推荐

  1. 关于WebGIS开源解决方案的探讨

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 公司目前的多数项目采用的是ArcGIS产品+Oracle+W ...

  2. (十三)WebGIS中工具栏的设计之命令模式

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 从这一章节开始我们将正式进入WebGIS的工具栏中相关功能的 ...

  3. Apworks框架实战(一):Apworks到底是什么?

    简介 Apworks是一款基于Microsoft .NET的面向领域驱动的企业级应用程序开发框架,它适用于以领域模型为核心的企业级系统的开发和集成.Apworks不仅能够很好地支持经典的分层架构,而且 ...

  4. 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)

    ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...

  5. 使用EDMX查询(EF基础系列15)

    EF支持三种类型的查询: 1.LINQ to Entities 2.Entity SQL 3.Native SQL 1.LINQ to Entities LINQ Method syntax: usi ...

  6. [PHP]Maximum execution time of 30 seconds exceeded

    前言 在使用PHP渲染页面页面的时候,如果程序处理的时间特别久,超过配置文件(php.ini)设置的超时时间,就会出现如下提示: Maximum execution time of 30 second ...

  7. LINQ to SQL语句(15)之String

    LINQ to SQL支持以下String方法.但是不同的是默认情况下System.String方法区分大小写.而SQL则不区分大小写. 1.字符串串联(String Concatenation) v ...

  8. C#如何静态调用C++中的方法(静态调用dll)

    当我们想要在C#中使用C++项目的方法时,这个时候就可以通过调用C++项目的dll来实现,它有静态和动态调用两种方法. DLL(Dynamic Link Library)文件为动态链接库文件,又称“应 ...

  9. super.getClass()方法调用

    下面程序的输出结果是多少?import java.util.Date;public class Test extends Date{public static void main(String[] a ...

  10. Thinking in Java——笔记(19)

    Enumerated Types Basic enum features When you create an enum, an associated class is produced for yo ...