《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 ...
随机推荐
- 优化JS加载时间过长的一种思路
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 去年公司在漳州的一个项目中,现场工程人员反映地图部分出图有点 ...
- 【Android】直播必备之YUV使用总结 —— Android常用的几种格式:NV21/NV12/YV12/YUV420P的区别
说明 因工作方面接触到图像处理这一块,需要对手机摄像头采集的原始帧做Rotate或者Scale,但无奈对此的了解少之又少,于是网上搜了一顿,完事后将最近所学总结一下,以方便之后的人别踩太多坑. 首先想 ...
- Java Script 编码规范【转】
Java Script 编码规范 以下文档大多来自: Google JavaScript 编码规范指南 Idiomatic 风格 参考规范 ECMAScript 5.1 注解版 EcmaScript ...
- 记录下Sublime Text Mac版的快捷键【转】
推荐使用最新版本的Chrome/Safari或者Firefox浏览器浏览此页,否则Mac按键可能无法正常展示 The Latest Version of Chrome/Safari or Firefo ...
- 去哪儿搜索引擎QSearch设计与实现
本次演讲主要介绍的是QSearch的具体设计和应用场景,并分别解答以下几个问题:QSearch与开源垂直软件Lucene的区别:具体业务的实现技巧.以及QSearch的具体设计:如何通过Partial ...
- Git-TortoiseGit完整配置流程
每次使用Git的时候都或多或少遇到些问题,为了方便以后少踩一些坑,把自己踩过的坑记录一下,加深对Git使用的理解,所以写下这篇日记记录一下. 本文需要频繁使用cmd,如果使用系统的cmd会稍微有点不便 ...
- 【中文分词】简单高效的MMSeg
最近碰到一个分词匹配需求--给定一个关键词表,作为自定义分词词典,用户query文本分词后,是否有词落入这个自定义词典中?现有的大多数Java系的分词方案基本都支持添加自定义词典,但是却不支持HDFS ...
- ASP.NET MVC自定义验证Authorize Attribute
前几天Insus.NET有在数据库实现过对某一字段进行加密码与解密<使用EncryptByPassPhrase和DecryptByPassPhrase对MS SQLServer某一字段时行加密和 ...
- .NET多线程总结和实例介绍
摘要:.Net提供了许多多线程编程工具,可能是因为太多了,所以掌握起来总是有一些头疼,我在这里讲讲我总结的一些多线程编程的经验,希望对大家有帮助. 1.多线程的总结 不需要传递参数,也不需要返回参数 ...
- onclick标签变成小手状
style=“cursor: pointer;”