Java核心技术1 第4章

4.1 面向对象的程序设计概述

4.1.1 类

  1. 是构造对象的模板或蓝图。由类构造对象的过程称为创建类的实例。
  2. 封装就是将数据和行为组合在一个包中,并对对象的使用者隐藏具体的实现方式。
  3. 对象中的数据称为实列字段,操作数据的过程称为方法
  4. 特定对象的特定实例字段值的集合称为该对象的当前状态
  5. 程序只能通过对象的方法与对象的数据进行交互
  6. oop的另一个原则是可以通过扩展其他类来构建新类,Java所有类来自一个超类object
  7. 扩展一个类来建立另外一个类的过程称为继承

4.1.2 对象

对象的三个主要特性:行为,状态,标识;

4.1.3 识别类

编写程序顺序:首先从识别类开始,然后再为各个类添加方法

4.1.4 类之间的关系

  • 依赖 (“ uses-a”):如果一个类的方法使用或操纵林一个类的对象,我们就说一个类依赖另一个对象;
  • 聚合 (“has-a“)包含关系
  • 继承(”is-a“)

4.2 使用预定义类

  1. 要使用构造器构造新实例,构造器是一种特殊的方法,用来构造并初始化对象‘
  2. 构造器的名字应该与类相同;
  3. 更改器方法:调用方法后,对象的状态会改变;
  4. 访问器方法:之访问对象而不修改对象的方法;

4.3 用户自定义类

  1. 文件名必需与public类的名字相匹配,在一个源文件中,只能有一个公共类,但可以有任意数目的非公共类;
  2. 强烈建议将实例字段标记为private
  3. 构造器总是结合new运算符来调用,不能对一个·已经存在的对象调用构造器来达到重新设置实例字段的目的。
  • 构造器于类同名;
  • 每个类有一个以上构造器;
  • 构造器可以有0个,1个或多个参数;
  • 构造器没有返回值;
  • 构造器总是伴随着new操作符一起调用。
  1. 如果可以从变量的初始值推到出他们的类型,那么可以用var关键字声明局部变量,而无需指定类型。
  2. 注意var关键字只能用于方法中的局部变量,参数和字段的类型必须声明;
  3. 隐式参数是出现在方法名前的类型的对象;显示参数是位于方法名后面括号中的数值;用关键字this指示隐式参数;
  4. 只返回实例字段值的访问器方法又称为字段访问器
  5. 想要获得或设置实列字段的值,需要提供:
    • 一个私有的数据字段;
    • 一个公共的字段访问器方法;
    • 一个公共的字段更改器方法;
  6. 一个方法可以访问所属类的所有对象的私有数据;
  7. 要实现私有方法,使用 private
  8. 只要方法是是有的,类的设计者就可以确信它不会再别处使用,所以可以删去;
  9. ** final**实例字段,必须在构造对象时初始化,并且以后不能再修改这个字段,
  10. final关键字只是表示存储在变量中的对象引用不会在指示另一个不同的对象,简单来说“引用不变,对象可改”

4.4 静态字段与静态方法

  1. 如果将一个字段定义成static,每个类只有一个这样的字段,意思是每个类的所有实例共享一个字段,不会创建副本;
  2. 建议使用类名而不是对象来调用静态方法;
  3. 使用静态方法的两种情况:
    • 方法不需要访问对象状态,因为它需要的所有参数都通过显示参数提供;
    • 方法只需要访问类的静态字段
  4. 工厂方法
  5. 静态的main方法将执行并构造程序所需要的对象;每一个类可以有一个main方法;

4.5方法参数

  1. 按值调用表示方法接受的是调用者提供的值;
  2. 按引用调用表示方法接收的是调用者提供的变量地址;
  3. JAVA总是采用按值调用,方法得到的是所有参数值的一个副本,具体地讲方法不能修改传递给他的任何参数变量的内容;
  4. 对象引用是按值传递的;
  5. java中方法对参数的作用:
    • 方法不能修改基本数据类型的参数;
    • 方法可以改变对象参数的状态;
    • 方法不能让一个对象参数引用一个新的对象;

4.6 对象构造

  1. 重载:多个方法有相同的名字,不同的参数,就会出现重载;查找匹配的过程称之为重载解析
  2. 方法的签名包括方法名及参数类型;
  3. 默认字段初始化:在类中没有显示的为字段设置初值,那么就会被自动的赋值为默认值:数值为0,布尔值为false,对象引用为null;
  4. 如果一个类没有编写构造器,就会自动提供一个无参构造器,无参构造器所有实例字段设置为默认值;如果类中编写了构造器,但是没有提供无参构造器,构造对象时不提供参数就是不合法的;无参构造器可以自己编写;
  5. 可以在类定义中直接为任何字段赋值;
  6. 如果方法中的形参和实例字段同名,参数变量会遮蔽同名的实例字段,这是可以通过this访问实例字段;
  7. 如果构造器的第一个语句形如this(...),这个构造器将调用同一个类的另一个构造器;
  8. 如果类的就静态字段需要很复杂的初始化代码

4.7 包

  1. 只能使用* 导入一个包;
  2. 类的导入;
  3. 静态导入:导入类的静态方法和静态字段;
  4. 标记为public的部分可以有任意类使用;标记为private的部分只能由定义他们的类使用,如果没有指定publicprivate,这个分(类,方法,变量名)可以被同一个包中的所有方法访问;

4.8 JAR文件

4.9 文档注释

  1. 类注释;
  2. 方法注释;标记:@param@return@throws
  3. 字段注释;
  4. 通用注释:@author name@version text
  5. 包注释:
    1. 提供一个名为package-info.java的JAVA文件,这个文件必须包含一个初始的以///界定的Javadoc注释,后面是一个package语句。它不能包含更多的代码或注释;
    2. 提供一个名为package.html的HTML文件,会抽取标记**…**之间的所有文本。

4.10 类设计的技巧

  1. 一定要保证数据私有;绝对不要破坏封装性;
  2. 一定要对数据进行初始化;
  3. 不要在类中使用过多的基本类型;
  4. 不是所有的字段都需要字段访问器共和字段更改器;
  5. 5.分解有过多职责的类;
  6. 类名和方法名要体现职责;访问器方法用小写get开头,更改器方法用小写set开头;
  7. 优先使用不可变的类;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MightKai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值