一、类的定义
语法:
[修饰符] class 类名 [extends 父类名][implements 接口列表]{
//类体部分
//类的成员属性的定义
[修饰符] 类型 变量名;
//类的成员方法的定义
[修饰符] 返回值类型 方法名 ([参数定义列表])[throws 异常列表]{
//方法体
}
}
- 【说明】:
- 修饰符分类:① 访问控制修饰(public等) ② 类型修饰(abstract、final等)
多个修饰符之间用空格隔开,先后顺序随意 extends
引导该类要继承的父类implements
引导该类所实现的接口列表
- 修饰符分类:① 访问控制修饰(public等) ② 类型修饰(abstract、final等)
二、对象的创建与引用
2.1 创建对象以及访问对象成员
创建对象同时给引用变量赋值语法:
<类型> 引用变量 =new <类型>([参数])
访问对象成员语法:
引用变量名.方法
- 【说明】:
- 一些定义
- 实例:对象称为类的实例
- 实例变量:对象的属性
- 实例方法:对象的方法
Point p1=new Point();
系统默认提供无参构造- 对引用变量的理解:
Point p1=new Point(); Point p2=new Point(5,8); Point p3=p1;
- 一些定义
4. Java垃圾回收处理器将自动发现并清除程序中没有任何引用变量指向的对象
2.2 对象的初始化和构造方法
对象的初始化有2大种:① 定义时指定初值 ② 构造函数指定
而定义时指定初值又有两种方法:
public class Point{
private int x=10;//方法一
{
x=20;//方法二:初始化块
}
public Point(){ //方法三:构造函数
}
...
}
- 【说明】:
- 定义属性成员没有指定初始值,则系统按默认设置;引用类型的成员变量的默认初始值为
null
- 属性初始化执行的次序:定义时赋值 —> 初始化代码块 —> 构造方法
- 构造方法注意点
- 构造方法的名称必须与类名一致
- 构造方法不能被static、final、synchronized、abstract、native修饰;没有返回值
- 一个类可以有多个构造方法(参数不同);在系统匹配时,按就近原则
- 一旦显示定义了构造器,则系统不再使用默认构造器
- 父类的构造器不可被子类继承
- 定义属性成员没有指定初始值,则系统按默认设置;引用类型的成员变量的默认初始值为
三、类变量和静态方法
4.1 类变量(静态变量)
- 定义:用
static
修饰的成员变量 - 访问:
- 在本类中直接访问
- 类名访问:
类名.静态变量
- 类的对象访问:
对象.静态变量
- 赋初值
//方法一:
static x=10;
//方法二:静态初始代码块
static {
x=100;
}
- 【说明】:
- 静态变量的地址只有一份
- 静态初始化代码块在
main()
前执行
4.2 静态方法
- 定义:用
static
修饰的方法 - 【说明】
- static方法中能处理类变量,也可以访问其他static方法,但不能访问任何归属对象空间的变量或方法
五、理解this
- this的使用:this作为前缀可以访问当前对象的实例变量和成员方法
- this的用途
- 实例变量与局部变量重名,用this特指实例变量
- 把当前对象的引用作为参数传递给另一个方法
- 在一个构造方法中调用类中另一个构造方法,这句放在第一句
//eg
public Point(int x,int y){
// 用途一:
this.x=x;
this.y=y;
}
public Point(){
//用途三:
this(0,0);//放在第一句的位置
}
public double distance(Point p){
//...
}
public double test(Point p){
//用途二:
return p.distance(this);
}
六、使用包组织类
-
【说明】
- 采用分层结构
- 同一包中不能有两个同名类
- 在缺省情况下,系统会为每一个源文件建立一个无名包
-
用户自定义包:
package
语句放在源文件的第一行
-
对定义包程序的编译(略)
-
引用其他包的类的方法:
- 加载某个类:
import java.util.xxx
- 加载整个包:
import java.util.*
- 加载某个类: