java核心技术卷3_《Java核心技术 卷I》读书笔记三

章节内容

面向对象程序设计

使用预定义类

用户自定义类

静态域和静态方法

方法参数

对象构造

类路径

文档注释

类设计技巧

面向对象程序设计

面向对象程序设计(OOP)已经取代了结构化程序设计。java是完全面向对象的。

OOP中我们不关心对象的具体实现,只要能满足需求。

类class是构造对象的模板或蓝图,由类构造对象的过程被称为创建类的实例。

java中所有类都继承Object类

对象

对象即类的实例,拥有类的所有方法

类之间的关系

最常见的关系有:

依赖 一个类的方法操纵另一个类的对象

聚合 一个类的对象包含另一个类的对象

继承 所有类都来源于Object类

使用预定义类

在java中一个对象变量并没有实际包含一个对象,而仅仅引用一个对象。

用户自定义类

程序员习惯于将每个类存在一个单独的源文件中。

java编译一个类文件如果使用了其他类,就会查找该类的class文件,如果没有找到就会自动搜索java文件并编译,如果java文件较已有的class文件有更新,java编译器会自动重新编译这个文件。

java的构造器可以有多个,没有返回值,可以有任意个参数,与类同名,伴随着new一起被调用。

封装的好处:

改变内部实现,对其他程序不可见

可以在封装方法上加业务逻辑执行错误检查

final修饰符表示构建对象时必须初始化这样的。

静态域只属于类,不属于每个对象,所以每个类只有一个静态域static

static和final经常一起使用,比如Math类中的PI:

public class Math {

public static final double PI = 4.141592657....;

}

比如标准输出:

public class System {

public static final PrintStream out=....;

}

System类中有个setOut方法,虽然out域是final的,但是setOut是一个本地方法,不是用java语言实现的,可以绕过java语言的存取控制机制。

静态方法:不能向对象实施操作的方法,使用静态方法的情况:

一个方法不需要访问对象的状态,所需参数都是通过显式参数提供,Math.pow,main方法

一个方法只需要访问类的静态域

方法参数

两种类型:

基本数据类型

对象引用

java的对象采用的不是引用调用,实际上对象引用是按值传递的。创建一个交换两个对象引用的方法是不能生效的

java中方法参数的使用情况:

一个方法不能修改一个基本数据类型的参数

一个方法可以改变一个对象参数的状态

一个方法不能让对象参数引用一个新的对象

对象构造

重载:一个对象有多个方法有相同的名字,不同的参数

方法的签名:方法名、参数类型和个数

构造器中没有显式给域赋予初值的,就被自动赋予默认值,0,false,null等

如果没有编写任何构造器,则系统会提供一个无参数构造器,如果提供了至少一个构造器,则不会自动提供无参数构造器。

构造器调用另一个构造器可以用this关键字

初始化数据域的方法:

构造器中设置值

声明中赋值

在初始化块中赋值

首先运行初始化再运行构造器

调用构造器具体处理步骤:

所有数据域被初始化为默认值

按照在类声明中出现的次序,一次执行所有域初始化语句和初始化块

如果构造器第一行调用了其他构造器,则执行其他构造器

执行构造器的主体

因为java有自动垃圾回收,所以java不支持析构器

如果对象中使用了内存外的其他资源,可以在finalize方法中回收。finalize方法将在垃圾回收器清除对象之前调用。

java使用包package将类组织起来,使用包的主要原因是确保类名的唯一性

java通过包导入类,*表示导入一个包的所有类文件

静态导入可以导入静态方法和静态域的功能。

import static java.lang.System.*

out.println("hello world");

exit(0);

包中的类文件应该放在和完整包名匹配的子目录中。

java的域和方法的作用域默认为包作用域。

类路径

为了使类能够被多个程序共享,类文件可以存储在jar文件中。

为了使类可以被多个程序共享,需要做到以下几点:

把类放到一个目录中

将jar文件放在一个目录中

设置类路径。类路径是所有包含类文件的路径的集合

可以用-classpath或-cp指定类路径,也可以通过设置CLASSPATH环境变量来完成。

文档注释

java注释可以到处javadoc文档

类设计技巧

一定要保证数据私有

一定要对数据初始化

不要在类中使用过多的基本类型

不是所有的域都需要独立的域访问器和修改器

将职责过多的类进行分解

类名和方法名要能体现职责

优先使用不可变类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值