- tags: java
- date: 2014-11-29
距离开始看 Java 语言已经半个月有余了,期间做了些 oj,浅显的了解了一些 Android 程序开发。再回过头来看 Java 语言本身,有一些需要注意的要点,本篇做一下小结。
- 实例变量:对象中已知的事物,用来表现对象的属性,代表一种状态
- 方法:对象会执行的一些动作,用来表示对象具有的某些行为
- 实例变量:直接声明在类中,类的方法之外
- 局部变量:声明在类的方法中的变量,没有默认值,使用前必须先进行初始化
封装的一条原则:将实例变量标记为私有,并提供相应的 getter 与 setter 来控制外围的存取权限
创建一个新的对象需要三步:
1.声明一个引用变量 2.创建这个对象 3.将新的引用于对象连接
final 关键字表示初始化之后不能够被改变的量(类似于const,表示以一旦被创建则不能被改动,可以用来防止方法的覆盖或创建子类)。标记为 final 的引用只能指向特定的对象不能更改。
静态方法:
- 不需要实例,可以直接通过类名访问的方法(如 Math.min())
- 静态的方法不能访问非静态的变量
- 静态的方法也不能调用非静态的方法
静态变量:它的值对同一个类的所有实例有相同,是共享的
静态的 final 变量:实际上就是一个常数,(如 Math.PI)
可以使用“是一个”与“有一个”来测试两个类是否是继承关系
- A 是一个 B ,那么A可以继承自B
- A 有一个 B ,那么他们是类与实例的关系
重写父类的方法是可以使用 super.method() 来调用父类相应名字的方法。父类可以设定方法的存取权限,有四种:private、default、protected、public
在多态的情形下,引用与对象类的类型可以是不同的,引用可以使对象类型的父类(多态数组)、然后使用父类作为参数传递给函数
重载是具有相同名字的方法,与继承、多态无关
- 抽象类(abstract 型类):不能被初始化,只能被子类继承
- 抽象方法:必须要被子类重写的方法,
不能在非抽象类中拥有抽象方法,Java 中所有的类都是从 Object 类中继承出来的,拥有 instanceof 方法,用来检查 Object 对象是否是某个对象。
接口:接口可以用来解决多重继承问题,不产生 致命方块,接口是把类中的所有方法都设为抽象的。
**extends 只能有一个,但是 implement 可以有很多个类。**可以解释为类来自单亲家庭,但可以扮演多种角色。
内部类:拥有权限存取它所在外部类的状态,即使是私有成员
开发一个类:
- 找出类应该做的事
- 列出实例变量和方法
- 编写方法的伪代码
- 编写方法的测试用程序
- 实现这个类
- 测试类的方法
- 出错或者重新设计
判断类、子类、抽象类或是接口
- 新类不能通过“是一个”测试,则它不继承其他类
- 需要一个类的特殊化版本时,以覆盖或增加新方法来继承现有类
- 需要定义一群子类的模板而不想被初始化,则使用抽象类
- 如果定义的类需要扮演角色,则使用接口
- main 函数的两种用途:
- 测试真正的类
- 启动一个 Java 应用
- .jar 文件:依据 pkzip 存档的 Java 文件,包含一个 mainfest 定义了哪一个文件含有 main 程序
- 类中 static{ } 语句块中包含的静态方法会在首次被调用时执行
- 在多线程编程中,同步化是要保护重要的数据,但是锁住的不是数据而是存取数据的方法