java学习
吾有一问,何为属性?
自解之曰:个体,即成员; ( 验证正确)
GUI编程
委托事件处理模型:
- 事件源:能产生事件的对象,
注意:特定事件源产生的事件是特定的(预先定义好的),就像收音机只能接受收音机信号,对手机信号无反应; - 事件处理者:具备处理特定事件能力的对象,
注意:事件处理能力通常用接口表示(即接口是能力标签),一个事件处理能力,对应一种接口。此类代表事件处理的接口,常称作侦听器Listener,侦听器中的抽象方法,就是事件处理时自动执行的方法,要成为事件处理者,必须实现对应的侦听器,即实现相关处理方法。 - 关联,即事件源对象.addXXXListener(事件处理者)。
- 例:一个简单计算器。
I / O流
- 基本概念
- 文件读 / 写
① 逐个字符读 / 写文件
② 按字符流整体读 / 写文件
③ 基于缓冲区读写文件 - 基本类型数据的读 / 写
① 从标准输入流读取数据
② 数值型数据的读写
③ 标准重定向 - 对象的序列化
① 对象序列化的实现
线程
- 线程的构造与运行
① 直接继承 Thread 类并重写run方法
② 将实现 Runnable 接口类的对象传给Thread 类对象 - 线程的互斥
① 执行、勿扰;执毕、接替。
② synchronized (a) { S; } synchronized 标志对象 a(临界资源),S为原子语句,对 a 进行访问(临界区)。
③ 实例:银行存取钱 - 线程的同步
① 异步:并发执行;
② 同步:有序执行;
异常处理和断言
异常处理机制:
- Throwable:
①Error
②Exception: RuntimeException; …
非检查型异常:(可以通过编译,但运行时会出现错误)
- Error、RuntimeException
检查型异常:(若无throw,try-catch-finally; 无法通过编译。)
- …
类
- 类的权限访问
① 缺省:只允许包内类访问。
② public:访问不受限制。 - 类中成员的访问权限
① private:仅该类自己访问;
② 缺省:包内类和包外子类均可访问;
③ protected:包内类和包外子类均可访问;
④ public:访问无限制。
面向对象语言基础
类、对象、对象的引用
-
类
① 类中的内容统称为成员,成员主要包括成员变量和成员方法;
② 类是根据名字进行区分 -
对象
① 所有变量(基本型、引用型)均存储于栈空间;所有对象均存储于堆空间。 -
对象的引用
空指针引用:引用变量未关联任何对象时,却引用其成员。
类中的成员及其修饰
- final 修饰
① final 修饰类,被修饰类不能派生出子类;
② final 修饰变量,被修饰变量称为常量,只能赋值一次;
③ final 修饰成员方法,被修饰方法不能被重写。 - static 修饰
static 只能修饰类中的成员,不能修饰普通的类。 - 构造函数的性质
① 与类同名,无返回值,且不能用 void修饰;
② 系统会默认提供一个构造函数,若自行定义,则不提供;
③ 通过 new 指令调用,不能通过引用名调用。 - 类中的特殊成员
内嵌类型:定义在类或接口内部,作为成员使用的类或接口;
初始化块:专门用于初始化对象的语句块,它不同于构造函数;
本地方法:用本地语言(如 c)编写的方法。
封装、继承、多态、抽象的实现
-
封装
① 打包:用 class 定义机制实现对类中成员的打包;
② 隐藏:用权限修饰实现成员的不同隐藏层次。 -
继承
① 超类是所有子类共性的抽象,子类是超类某种个性的发展。
② 单继承策略,一个子类只能继承一个父类。-
is-A 与 has-A
is-A:对象与类之间的关系;可用于判别对象间的赋值兼容性;
has-A:类与其成员之间的关系,决定了对象能实施的动作。 -
在构造子类的对象时,会自动调用超类的构造函数,调用次序与派生次序相同。
- 子类对象在创建时,定会调用超类的构造函数, 默认时,调用超类的无参构造函数;若超类构造函数有参,则有两种方法解决:
① 为超类新增一个无参构造函数(不常用,因为一般不改变超类);
② 子类定义自己的构造函数,并在构造函数中借助 super 主动调用超类的构造函数,且 super(…) 必须放在构造函数的第一句。
- 子类对象在创建时,定会调用超类的构造函数, 默认时,调用超类的无参构造函数;若超类构造函数有参,则有两种方法解决:
-
super 和 this
① 引用对象自身的或继承来自超类的成员;
② 用 this 或 super 调用构造函数;
③ 在参数传递时,把 this 指代的当前对象作为实参传给其他方法。
-
-
多态
- 重载:
① 在编译阶段就能根据参数类型确定究竟执行哪一方法,即与静态绑定相关的多态,称为重载。
② 区分的依据是参数列表,即形参的个数、类型和排列顺序是否一致。
③ 用途:实现对象自身行为的一名多用,即同一功能在不同环境下有不同载体。 - 重写
① 要求:同名、同参、相同返回类型。子类方法的存取权限不得小于超类方法的存取权限。
② 实质:子类对从继承自超类的特定方法的重新实现。 - 重定义(不属于多态的范畴)
即重新定义类中的成员,除名称相同外,方法所需的参数列表、返回类型、属性修饰等、可以完全不相关。
① 子类重新定义从超类获得的属性
② 子类定义的方法与超类的私有方法或静态方法同名。
③ 从用途方面对比重载、重写与重定义
1)重载:对象在不同环境下的不同功能实现,功能除同名外,无其他关系。
2)重写:实现一种替换机制,用子类对象自己的特质功能替换超类的通用功能。
3)重定义:一种全新的定义,没有重载或重写的诸多限制;重定义适用于属性,可以用于屏蔽超类的同名属性。
- 重载:
-
抽象
抽象方法用 abstract 修饰,不能有方法体,且约定包含抽象方法的类无法创建对象;
只有重写类中的所有抽象方法,才能创建对象;- 抽象类
旨在建立抽象类与某派生类之间的契约,是契约的重量级应用方式; - 接口
在任意类之间建立契约,是契约的轻量级应用方式。
- 抽象类
-
abstract 修饰
① 只能修饰类或类中的成员方法,不能修饰属性;
② 被修饰的类称为抽象类,被修饰的方法称为抽象方法;
③ 抽象方法不能有方法体,而抽象类不能被实例化,若一类中包含抽象方法,则该类必须是抽象类。
④ 抽象方法必须被重写,故其不能修饰最终方法、静态方法或构造函数。 -
接口
① 接口不是类,没有构造函数,也不能实例化出对象;
② 接口采用多继承机制,子接口能继承多个接口;
③ 接口中的成员变量无论是否用 public、static 和 final 修饰,都有这三个属性,且不可更改;成员方法无论是否用 public、abstract 修饰,都有这两种属性,且不可更改。