六、Java类
1. Java中用关键字class来创建类.
2. 类中属性和方法称为类的成员;类的声明和方法要在同一个文件内,不同于C++.
3. 类的定义:
[] class [extends][implement]{
}
4. 类名首字母要大写.
5. 类中定义的变量称为类的成员变量;类的方法体中定义的变量和方法的参数称为局部变量.
6. 成员变量的定义:
[] ;
7. 类的方法的定义:
[方法修饰符] ([方法参数列表]){
方法体
}
8. 类的修饰符有:public,private,final,abstract.或缺省
9. 类的变量修饰符有:public,private,protected,static,final或缺省
10.类的方法修饰符有:public,private,protected,final,static,abstract,synchronized
11.成员变量的访问类型:public,protected,friendly,private.(类内,包内,子类,包外)
12.类的命名空间:”包名.类名.成名”
13.final关键字:“最终的”。
a) 修饰变量——>常量。
b) 修饰类——>该类不能被继承。
c) 修饰方法——>该方法不能被子类重写。
14.static关键字:”静态的”
a) 函数体内的变量不能声明为静态变量;
b) 静态变量在一个类中生成的所有对象中是唯一的;
c) 静态方法中只能调用所在类的其它静态方法或变量,不能在main()方法中定义静态方法
d) 静态初始化块:[static] { …//初始化代码}
e) 静态初始化块在对象创建时隐式执行,比类的构造方法还要先执行!
15.类的main()方法:作为Java类的运行起点,main()方法所在的类一般为主类,但在哪个类并没有很大关系.Java规定类文件的文件名要与定义为public的类名相同.
16.this关键字
隐藏的实例变量可以用this来访问,可省略的.(方便用户理解程序)
17.GC垃圾回收器:
1) new----àfinalize
2) new分配内存:栈内存 | 堆内存.
七、类的对象
1. 对象的声明: ;
2. 对象初始化: 对象名 = new 类的构造方法名([方法参数]);
3. 对象的创建: = new ([方法参数]);
4. 对象的调用: 点操作”.”
八、类的构造方法
1. Java为所有类都自动提供了一个默认参数为空的构造方法,用于初始化成员变量.
2. 构造方法与类的名称相同,并且不返回任何值,void类型也不行.
3. 构造方法是当类的实例对象创建时由编译器自动运行.
4. 如果程序没有提供构造方法,则默认运行无参的构造方法.
5. 如果程序有提供有参的构造方法,则编译器不再自动提供无参构造方法,此时如果需要无参的构造方法,需自己写入.
6. 构造方法的重载:定义包含不同参数的构造方法
7. 构造方法的继承:
a) 子类可以无条件继承父类中的无参的构造方法;
b) 如果子类没有定义构造方法,则子类将自动继承父类的无参构造方法作为自己的构造方法;如果子类有定义构造方法,则程序运行时,先执行父类的无参构造方法,再执行子类自己的构造方法;
c) 子类无法自动继承父类的有参的构造方法,但可通过super调用
九、类的继承
继承:从现有的类中派生出新的类.
1. Java中,若类C1是从另一个类C2派生出来的,那么C1为子类,C2为父类.
2. 子类从父类中继承所有的成员变量和方法,并可创建新的变量和方法.继承后子类不能访问父类中private的变量或方法.
3. 关键字extends:
Class A{}
Class B extends A{}
4. Java中子类和父类都有自己的构造函数,父类的构造函数构造父类部分,子类的构造方法构造子类部分.但当子类要使用父类的构造方法时,可用super关键字调用.
5. Java中每个类都是从java.lang.Object类中继承的,是所有类的隐性父类,提供许多方法.
6. Java中不支持多重继承,一个子类只能有一个父类
7. 内部类
8. 匿名类,匿名内部类
9. 重写与重载
a) 方法重载:方法名相同,参数的个数或类型不同,与返回类型无关,发生在同一个类中
b) 方法重写:方法名,参数的个数和类型,返回类型都相同,而方法体的实现不同.发生在子类和父类之间
c) 重写的子类抛出的异常应该小于父类对应方法抛出的异常范围.
十、抽象和接口
抽象:
1. 抽象:声明方法的存在却不实现它的类称为抽象类
2. 抽象类中可以包含抽象方法和非抽象方法,也可以只包含非抽象方法。
3. 实现抽象类的子类必须实现抽象类中全部的抽象方法,不然仍为抽象类。
4. 抽象类的作用之一是防止父类中的方法没被重写。
接口:
1. 接口定义:[接口修饰符] interface [extends] { 接口体 }
a) 接口修饰符:public或缺省
2. 接口的实现:implements
3. 接口中所有的方法都是抽象方法,所有的变量都是static型或final型。
4. 接口被实现时,其内的所有抽象方法都必须被实现
5. 接口可以供继承。
九、包package