《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));
}
}
以下说法正确的是:编译失败。
《java JDK7 学习笔记》之对象封装的更多相关文章
- 《java JDK7 学习笔记》之类和对象
1.在java中,要产生对象必须先定义类,类是对象的设计图,对象是类的实例.类定义时使用class关键词,建立实例对象要使用new关键词.以类名声明的变量,称为参考名称.参考变量或直接叫参考. 2.想 ...
- 《java JDK7 学习笔记》之Collection
一.使用Collection 收集对象 1.认识Collection架构 Java SE提供了满足各种需求的API,在使用这些API前,建议先了解其继承与接口操作架构,才能了解何时使用哪个类,以及类之 ...
- 《java JDK7 学习笔记》之异常处理
1.java中所有的错误都会被打包为对象,JVM会尝试执行try区块中的程序代码,如果发生错误,执行流程会跳离错误发生点,然后比较catch括号中声明的异常类型,是否符合被抛出的错误对象类型,如果是的 ...
- 《java JDK7 学习笔记》之继承与多态
1.面向对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承.应该正确判断使用继承的时机及继承之后灵活的运用多态,才是学习继承时的重点. 2.程序代码重复在程序设计上,就是 ...
- 《java JDK7 学习笔记》之接口与多态
1.对于"定义行为"也就是接口,可以使用interface关键字定义,接口中的方法不能操作,直接标示为abstract,而且一定是public修饰的. 类要操作接口,必须使用imp ...
- 《java JDK7学习笔记》之跨平台与路径设置
Platforms表示Solaris.Linux.Windows各种操作系统平台,在这些平台上架构了java Virtaul Machine,简称JVM,Java虚拟机. Java虚拟机可以让java ...
- 《java jdk7学习笔记》之java三大平台
Sun公司在2006年底,就将三大平台正名为java SE.java EE和java ME.也有很多人习惯用J2SE.J2EE和J2ME. 1.java SE java SE(标准版)是各应用平台的基 ...
- 《Java JDK7 学习笔记》课后练习题1
1.()组织负责监督审查Java相关技术规格的演进. A. JCP B. Apache C. EU D. W3C 2.Java技术规格必须以()正式文件提交审查. A. RFC B. JSR C. I ...
- 《Java JDK7 学习笔记》课后练习题2
1.如果在hello.java中撰写以下的程序代码: public class Hello { public static dmain(String[]args) { Sys ...
随机推荐
- 1Z0-053 争议题目解析481
1Z0-053 争议题目解析481 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 481.Which statement is true about a running sessi ...
- PowerDesigner生成Access数据库
1.打开PowerDesigner,设置PowerDesigner的当前数据库为Access: 2.在PowerDesigner中新建表结构(物理模型): 3.PowerDesigner菜单中:Dat ...
- JavaScript代码模块化的正规方法
RequireJS-CommonJS-AMD-ES6 Import/Export详解 为什么起了一个这个抽象的名字呢,一下子提了四个名词分别是:RequireJS,CommonJS,AMD,ES6,答 ...
- jquery兼容实验
使用jquery时候,曾经遇到两个问题: 1.一个页面里,使用了很多基于jquery的前端ui库,但是各个库之间对jquery的依赖的版本不一样,有的依赖jquery1.4,jquery2.0用不了: ...
- 分享一个UI与业务逻辑分层的框架(二)
序言 第一篇讲解了UI与业务逻辑分层的框架(UIMediator)的使用.本篇将说明该框架的原理及代码实现. 整体结构 UI与后台类绑定主要分为UI输入->后台属性,后台属性-UI更新两部分,为 ...
- vue+sass 下sass不能运行问题
好久没写博文了,今天抽空写一写,最近在用vue.js build 项目,今早想使用sass来编译css,可是安装好依赖包之后仍然显示一下错误: ERROR in ENOENT: no such fil ...
- Eclipse切换SVN用户
1. 点击windows --> preference --> Team --> SVN,查看当前的SVN接口. 2. 如果SVN接口是JavaHL,那么找到C:\Documents ...
- C++_系列自学课程_第_3_课_变量和基本类型_《C++ Primer 第四版》
最近复习C++相关内容,决定在这里记录自己复习的过程. 以前写过部分文字,但是没有坚持连续写,因此学完后 基本又忘光啦,主要是没有实践,这一次决定自学完后,在这里在复习一遍增强自己的记忆和理解程度. ...
- Longest Substring Without Repeating Characters(C语言实现)
Given a string, find the length of the longest substring without repeating characters. Examples: Giv ...
- 【HTML DOM】Node.nodeValue的用法
目录结构: // contents structure [-] 语法 注意 详述 实例 参考文章 Note.noteValue 属性返回或设置当前属性的值. 语法 value = node.nodeV ...