b) 用于描述一个类下所有对象共享的属性,一个对象改变了这个属性的值,其他对象在调
用这个属性时,值也发生了改变。
2) 类方法(静态方法)
a) 用static修饰的方法,叫类方法
b) 静态方法中不能访问非静态成员(属性和方法)
c) 在类外,静态属性和静态方法可以通过类名直接调用,也可以通过对象名调用。 d) 在类外,非静态属性和非静态方法只能通过对象名调用。 e) 类方法的创建:
[修饰符] static 返回值类型 方法名(参数列表) { //方法体 }
第四章、 封装、继承与多态
简答、选择
1. 类的可见性修饰符
名称 public 默认的 说明 可以被所有类访问(使用) 可以被同一个包中的类访问(使用) 备注 public类必须定义在和类名相同的同名文件中 默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中 2. 类的成员(属性和方法)的可见性修饰符
注:方法和构造方法一般为public、属性一般为private、对私有属性的访问通过访问器方法完成(set方法和get方法) 3. 访问器方法-针对属性的
1) 由于对象不能直接通过引用访问私有数据域(属性或方法),为了能够访问到私有数据域,
可以为私有数据域添加读取方法?设置方法。84页例题6.1。 2) 设置方法-setter方法(设置器) 3) void set属性名(属性类型 参数) 名称 public protected private 缺省的 说明 可以被任何类访问 可以被同一包中的所有类访问 只能够被当前类的方法访问 可以被同一包中的所有类访问 备注 子类没有在同一包中也可以访问 如果子类没有在同一个包中,不能访问 { 属性名=参数;} 4) 获取方法-getter方法(访问器)
属性类型 get属性名() { return 属性名;}
36
5) 比如:对属性radius
public void setRadius(double r) { radius = r;
}
public double getRadius() { return radius;
} 4. 包
1) 定义包(将类放入包中) package 包名
注:package必须写在程序的第一行。如果JAVA程序中省略了包的声明,则认为这个类是在一个“无名包”中,有包的类不能访问无名包中的类。一个程序两个包中类同名,在使用类名前加包名前缀。 2) 包的引入
Import 包名.类名;
注:只能引入其他包中的public类。一个类可以使用多个import语句引入其他包。import语句在package语句后的第一条非注释语句。 5. 继承和多态
1) 继承的定义:面向对象中在已有类的基础上扩展出新类的方式称为继承。继承用于描述两个
类之间的 “ is-a ” 关系。扩展出的新类称为子类(次类),被继承的类称为父类(超类)。 2) 继承的语法:
[ 修饰符 ] class 子类名 extends 父类名 { //类体 }
3) 继承要点:子类可以得到父类的属性和方法。 继承来的子类可以添加新的属性和方法。 超
越继承子类可以重新定义父类的属性和方法。 4) 子类只能继承父类中可访问的属性:
a) 父子类在一个包中,子类可以继承父类中的非私有属性
b) 父子类不在一个包中,子类可以继承 public 类中的, public 属性和 protected 属性 5) 属性隐藏:子类可以定义与父类同名的属性,称为属性隐藏。也就是说子类可以重新定义父
类的属性。发生属性隐藏时,调用子类方法用子类属性,调用父类方法用父类属性。
6) 方法覆盖:子类将从父类中继承下来的方法重新实现,在子类中可以定义与父类方法头相同
的方法,叫做方法的覆盖。子类方法只能扩大覆盖访问权限,如父类是protected,子类只能是protected或public。
7) 方法重载:两个方法具有相同名称和不同的参数形式。被重载?方法必须具有不同的参数形
式。不能基于不同的修饰符或返回值类型重载方法。
8) 重载方法是提供多于一个方法,这些方法的名字相同,但参数形式不同;覆盖方法就是在子
类定义一个方法,该方法与父类中的方法名相同,参数形式也相同,并且返回值类型也相同。 6. 继承中的构造方法
1) 在创建子类对象时,先调用父类构造方法 ,然后再调用子类构造方法。默认情况下,调用父类无参的构造方法。在创建子类对象时,先调用父类构造方法 ,然后再调用子类构造方法。默认情况下,调用父类无参的构造方法
2) 构造方法调用原则:先父类,后子类默认调用父类无参构造方法。可用 super 在子类构造方
37
法中指明调用父类有参构造方法
3) super关键字:this指对象自己,super指父类对象
注:super在子类构造方法中知名调用父类?构造方法。子类中调用父类的属性和方法。不能在静态方法中使用。如果调用父类的构造方法,super语句必须写在子类构造方法的第一条。 7. final关键字
1) 用final说明一个类是终极的,不能做父类。
2) 用final定义的方法为终极的,不能被它的子类覆盖。 3) 用final修饰的属性和局部变量都不能被重新赋值。
第五章、 抽象类和接口
简答、选择
1. 抽象类
1) 抽象类:用abstract修饰的类。只能用于继承,不能用于创建对象 2) 创建抽象类:
[public] abstract class 类名[extends父类] {
[属性声明及初始化;] [抽象方法的声明;]
[非抽象方法声明及方法体;] }
3) 抽象方法:用abstract修饰的方法
只有方法头没有方法体。 抽象方法只能定义在抽象类中 4) 抽象方法语法结构
[修饰符] abstract 返回值类型 方法名(参数列表); 5) 抽象方法的作用:
强制非抽象子类中必须实现(覆盖)这个抽象方法。 6) 要点:
abstract类不能实例化,只能用于继承
abstract方法只有方法头,没有方法体。只能定义在抽象类中 注:抽象类中可以有具体方法 7) 抽象类不能创建对象,作用就是被继承。抽象类中的抽象方法在其非抽象子类中必须实现(覆
盖) 2. 接口
1) JAVA中的类只能单继承,用接口来实现多重继承的功能,但不能被称作多重继承。接口中只
能定义静态变量和抽象方法。 2) 接口定义的语法:
[public] interface 接口名 [extends 父接口列表]
38
{
// 属性声明
[public] [static] [final] 属性类型 属性名 = 常量值 ; // 方法声明
[public] [abstract] 返回值类型 方法名 ( 参数列表 ) ;
} 注:
1.修饰接口的修饰符只有public和默认修饰符两种。
2.接口可以是多重继承。接口只能继承接口,不能继承类。 3.属性必须是常量(有初值),方法必须抽象(无方法体)。
3) 接口与类之间的关系:类实现了接口,一个类可以同时实现多个接口,一个接口可以被多个
类实现。 4) 实现接口
class 类名 [extends 父类] [implements 接口列表] { 覆盖所有接口中定义的方法; } 注:
1、一个类可以同时实现多个接口,但只能继承一个类 2、类中必须覆盖接口中的所有方法,而且,都是公有的
第六章、 基础类库(课本第九章)
简答、选择、编程
注:掌握字符串的应用、掌握数组的使用、掌握JavaDoc的使用、了解基础类库的结构、了解常用类的使用
1. 声明数组
数据类型【】 数组名; 数据类型 数组名【】; 2. 数组对象的创建(实例化)
对象名 = new 元素类型[元素个数] 1) int [] a;//声明
a = new int [100];//创建
2) int [] a = new int [100];//声明+创建 3. 数组元素的访问 语法:数组[索引号] 4. 对象数组
Student students = new Student[2]; Student st1 = new Student(\王一\students[0] = st1;
Student st2 = new Student(\李二\students[1] = st2;
39
5. 多维数组
创建多维数组
int [][] a = new int[2][3]; int [][][] b = new int[2][3][4]; Circle [][] c = new Circle[2][3]; 书P144例9.2 6. Vector(向量) 1) 2) 3) 4) 5) 6) 7) 8) 9)
创建向量:Vector v = new Vector(); 添加元素:v.addElement(anObject);
获取元素:Object anObject = v.elementAt(0); 获取向量中元素个数:int num = v.size(); 插入一个元素:v.insertElement(anObject , 4); 替换指定下标的元素:v.setElement(anObject,4); 删除指定下标的元素:v.removeElement(4); 返回向量的容量:v.capacity();
第一次出现指定元素的位置:v.indexOf(anObject);
7. String类 1) 2) 3) 4) 5) 6)
判断该字符串是否与目标字符串相等:boolean equals(Object o) 不区分大小写比较是否相等:boolean equalsIgnoreCase(Object o) 按照字典顺序比较当前字符串与目标字符串:int compareTo(String s) 获取字符串的长度:int length()
获取指定位置的字符,index从0开始:char charAt(int index) 获取字符串的子串:
String substring(int from,int end) String substring(int from)
7) 查找指定字符或者字符串的位置,如果未找到返回-1
int indexOf(char c)
int indexOf(char c,int from) int indexOf(String s)
int indexOf(String s,int from) 8. StringBuffer类 1) 2) 3) 4) 5) 6) 7)
在字符串缓冲区后追加指定内容:append() 指定索引处插入指定字符:insert()
指定索引处的字符删除:deleteCharAt() 返回字符串缓冲区容量:capacity() 返回字符串缓冲区长度:length() 返回字符串内容:toString()
返回指定索引位置的字符:charAt()
9. String与其他数据类型间的转换 1) 其他数据类型->字符串
40
String out1 = String.valueOf(100) ; String out2 = String.valueOf(36.27) ; String out3 = String.valueOf(true) ; String out4 = String.valueOf(‘f’) ; 2) 字符串->其他数据类型
int i1 = Integer.parseInt(“111”);
double d=Double.parseDouble(“123.87”); float f=Float. parseFloat(“123.87”)
boolean=Boolean. parseBoolean(“true”) 10. Math类
1) 求两者间较大数:static int max(int a , int b) 2) 求两者间较小数:static int min(int a ,int b) 3) 求绝对值:static int abs(int a) 4) 四舍五入:
5) static int round(float a) 6) static long round(double d)
7) 求n次方:static double pow(double a,double b)
8) 求最大的整数但不大于本身:static double floor(double d) 9) 求最小的整数但不小于本身:static double ceil(double d) 10) 求平方根:static double sqrt(double d) 11) 0-1间的随机数:static double random() 11. 日期处理相关的类
1) java.util.Date用于表示日期和时间 2) Java.util.Calendar
修改时间:
void set(int year,int month,int date) void set(int field,int value) 与Date转换: Date getTime()
void setTime(Date time)
41