JAVA核心技术 卷1 学习笔记-类相关
记录一下JAVA核心技术 卷1 4,5,6三章的内容,避免每次都从头开始阅读
名词
OOP 面向对象程序设计:只知道概念,理解还是不深刻
类
对象
实例化:用构造器构造新实例
封装:绝对不能让类中的方法直接访问其他类的实例域,仅通过对象的方法与对象数据进行交互
实例域
final实例域
方法
继承
object类
类之间的关系:
uses-a 依赖
has-a 聚合
is-a 继承
构造器
UML类图
引用:JAVA中对象并没有实际包含对象,而是仅仅引用一个对象,类似于C++的指针
静态工厂方法(就是返回当前类和子类类型的静态方法)
更改器方法和访问器方法
静态域和静态方法
方法签名:方法名和参数
访问级别:public,private,包作用域
初始化块:
对象析构,finalize方法
包的导入:
构造器(暂时没有太难的地方)
- 和类方法同名
- 可以有多个构造器
- 构造器可以有多个参数
- 没有返回值
- 总是伴随着new调用
- final实例域必须在构造器执行之后被赋值,之后再也不能修改 (这一点之前理解有误)
封装
如果需要返回一个可变数据域的拷贝,就应该使用clone
方法可以访问所调用对象(同一个类的其他对象)的私有数据 (这一点需要牢记)
静态域和静态方法(这一点需要多复习)
- 静态域属于类,不属于任何对象
- 静态方法只能访问静态域
- 对象和类都可以访问静态方法,但是建议用类来访问静态方法
方法参数 (值得关注)
- 按值调用 JAVA总是按值调用,因此JAVA中的方法不可能修改基本数据类型的参数,但是可以修改对象数据类型的值,因为新建一个局部变量复制了原来的变量,而原来的变量只是一份对象的引用,因此局部变量和原来的变量指向同一个引用,就可以修改对象的值了
- 按引用调用
对象的构造
- 支持重载
- 类中的域如果没有被初始化,则会被自动初始化为默认值
- 类中没有提供任何构造器时,系统会提供一个默认的构造器
- 构造器彼此之间可以互相调用
- -
初始化块(用的不是很常见,可以暂时不管)
- 只要构造类的对象,初始化块就会被执行
- 静态初始化块
finalize方法(这个暂时不重要)
- 会在垃圾回收器清除对象之前调用
包的导入
- import
- import static 导入静态方法和静态域
- package
问题
封装中关于静态域如何解释?
实例域的初值和构造器中赋初始值的关系:实际上就是给出了类在调用构造器之前的初始值,在构造器中只要不明确的给这几个参数赋值,就会默认是这些初始值
java的编译过程
总结
这一章介绍了类的概念,包括类的实例域和方法,方法中主要介绍的内容是构造器,实例化一个类的对象是,类中各个实例域的值会有默认值,0,null或false,在构造的时候可以通过构造器来初始化,也可以通过在声明变量时进行初始化,还可以通过初始化块来初始化。
除了普通的实例域和方法外,还介绍了静态实例域和方法,以及final实例域。静态实例域和方法需要再关注,理解记忆。
还有一个重要的知识点就是,java中所有对象的实例变量其实都是对对象的引用,而且java中参数的传递都是传值传递的。
总体而言,这一章的内容比较简单,没有太多的知识点。