Java学习笔记2------对象与类

学习《Java核心数据》(原书第十版)的笔记------第四章

1、类是构造对象的模板或蓝图

2、封装(encapsulation)亦称数据隐藏,是面向对象的重要概念

3、对象中数据叫做实例域,操纵数据的过程称为方法

4、实现封装的关键在于绝对不能让其他类访问本类的实例域

5、类和类之间最常见的关系有:聚合(has-a),依赖(using-a),继承(is-a)

6、使用构造器获得类的新的实例;需要使用new关键字来调用构造器;构造器的名字应该与类名相同;

7、如果没有写构造器,则系统将自动为类生成一个构造器,将所有的值设置为默认值,基本数据类型设置为0,boolean设置为false,对象设置为null

8、如果提供了带参数的构造器,那么将不能默认使用不带参数的构造器进行构造,否则将会报错

9、对象与对象变量的区别:对象是存储在内存中的一个实际存在的内存区域,对象变量实际上只是对象的引用

10、如果在定义对象变量是不知道要引用什么对象,那么应该初始化为null

11、java中=符号对对象变量进行赋值时将进行引用赋值,需要真的进行拷贝,需要使用clone()函数

12、java类库的Date类并不是一个安全的函数,它允许使用函数修改关键的数值------距离现在的秒数。java官方不推荐使用。应当使用LocalDate对象

13、更改器方法和访问器方法:更改器方法将更改本对象的实例域、状态;但是访问器方法不会改变本对象的状态,即使它可能返回一个经过克隆并修改之后的相同对象

14、构造器必须与类同名,每个类都可以有一个以上的构造器,构造器可以有0、1或者多个,构造器没有返回值;构造器总是伴随着new关键字一起使用

15、不要在构造器中使用和实例域同名的局部变量,这样会将实例域覆盖;如果一定要这样使用,可以在后面使用this关键字调用本对象的实例域;另一种方法时在构造器中传入参数中,在参数名之前加a,如aName,aAge

16、隐式参数和显式参数:每一个类的方法都有一个隐式参数,this,即对象本身,在方法中使用this能够使得其他变量与作用域分开,更加清晰;显式参数即传入的参数

17、在java中,所有类的方法必须全部定义在类中

18、使用访问器和更改器方法能够实现数据的封装,确保数据不被外部修改

19、为了进行封装,需要有如下三项内容:

        一个私有的数据域

        一个共有的域访问器方法

        一个共有的域更改器

        这样,可以更改类的内部实现,而不影响外部,方便进行错误检查。

20、方法可以调用本类对象的私有数据。并不局限于本对象

21、final实例域:定义常量

         但是,final关键字只决定了修饰的对象变量不能再引用其他对象,但是不能保证其引用的对象不被修改。

22、静态域static:静态域属于一个类,一个类创建时生成,为每个对象共有

23、静态常量:一般用作常量,如public static final double PI,并且一般为public,因为不用担心被修改

24、静态方法static

        使用类名能够直接访问的方法,静态方法不对类进行操作,没有隐式参数this。

        static方法能够通过类名直接调用,虽然可以通过对象名调用,但是使用类名调用更加清晰。

25、显然不能通过类名调用普通方法,因为没有隐式参数可以传递。

26、但是静态方法可以访问本类的静态域。

27、工厂方法

        当要使用一个对象/类生成另外一个对象时,不能直接调用本类的构造函数,因为本类构造函数不能返回要求的类的对象。

这时,使用静态的方法充当工厂方法,返回需要的对象

28、java是按值调用还是按引用调用

        答:按值调用。对于基本数据类型的参数,直接进行数值调用,这毫无疑问。对于对象类型的参数,传入的是对象的引用,在方法中获得的是对对象的引用的拷贝,所以可以修改对象,但是不能修改传入的形参的指向。

29、重载

        java允许重载任何函数,不局限于构造函数,重载时需要方法的签名不同。方法的签名指“方法名 + 参数”,主要签名不同,就可以重载。但是返回值并不是签名的一部分,所以不能重载方法名和参数相同,但是返回类型不同的方法

30、默认域初始化

31、无参构造器

32、显式域的初始化:直接对实例域用等号进行初始化;会在执行构造器之前,进行显式域的初始化

33、初始化块:在类中用{}包含的语句块,用于初始化,在构造器之前执行。

34、使用构造器调用其他构造器,可以避免构造器修改时对其他代码产生影响

35、静态域初始化块:static{}包含的语句块,对静态域进行初始化,仅在类初始化时执行一次

36、对象析构与finalize方法

        在对象中重写finalize方法,能够使得在对象在被垃圾回收器回收之前执行所需操作,一般是释放系统资源。

        更好的方法是使用close方法,使用完成后手动释放资源。因为垃圾回收并不·确定在何时执行。

37、包

发布了86 篇原创文章 · 获赞 56 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/WilliamCode/article/details/103464757