Java基础(五)-类的特性
Java基础目录
这本Java程序设计基础(第6版)-陈国君真的不错,讲的很清楚,例子也都是能直接使用的,推荐一下。
基础-强调本类成员-this
- this.成员名,强调该成员,是本类的。
- 外部传参名与成员名一致时,成员被隐藏,需要使用this。
- 这个关键字真的不错,非常适合取名偷懒,以及核对。
例子见下面访问控制修饰符的代码。
基础-类中成员变量初始值定义
在定义变量时,直接赋值即可。
class Triangle{
int value = 1; //将Triangle类生成的对象中,value的默认值设置为1,如不设置,会使用int类型默认值,即0。
}
访问控制修饰符
- private:私有访问修饰符,作为修饰时,仅可在本包本类内部调用该成员。
- 若想在类外调用,可在类中定义非私有方法,方法中调用该成员。
- default(缺省):缺省访问控制符,作为修饰时,仅可在本包中调用该成员。
- 缺省是可以不写的意思。
- protected:保护访问控制符,作为修饰时,非本包的子类可以调用。
- public:公共访问修饰符,作为修饰时,可在任何地方调用该成员。
private int value; //私有成员变量
public void modifyValue(int value){ //使用公共方法修改私有成员变量
this.value = value; //使用this强调此处value为类的成员
}
方法的重载
- 方法名相同,参数列表不同的方法,叫做方法的重载。
- 重载的方法不是覆盖原方法,而是提供另一种调用方法的方式,
- 即,一个方法名,可以有多种调用方式。
- 方法的重载是实现多态的一种方式
- 参数列表不同:
- 顺序不同。
- 个数不同。
- 类型不同。
- 参数列表中参数名称不同不算重载。
- 方法返回值的不同不算重载。
public void show(int value){
System.out.println("show "+value);
}
public void show(){
//重载show方法。
System.out.println("show");
}
构造方法
构造方法是在分配对象的时候使用的,用来初始化对象。
- 若无构造方法,类会自动生成一个参数空、语句块空的构造方法。
- 构造方法可重载。
- 构造方法无返回值。
- 构造方法名与类名相同。
- 构造方法中可调用另一个构造方法,使用this()调用。
class Triangle{
double a, b, c;
Triangle(){ //参数空、语句块空的构造方法,若无构造方法,会生成空构造方法。
}
public Triangle(double a,double b){ //重载构造方法
。
this.a = a;
this.b = b;
}
public Triangle(double a, double b, double c){ //重载构造方法,并调用另一个构造方法。
this(a, b);
this.c = c;
}
public static void main(String[] args){
Triangle t;
t = new Triangle(); //使用空构造方法new对象t,构造一个三边为0,0,0的三角形(double类型默认值为0)。
t = new Triangle(3, 4, 5); //使用带参数的构造方法new对象t,构造一个三边为3,4,5的三角形。
}
}
实例成员与静态成员
- 使用static修饰的成员,是静态成员。
- 不使用static修饰的成员,是实例成员。
- 静态成员的性质:
- 静态成员,可以看做类的全局变量,由类生成的对象,共同拥有这个静态成员。
- 静态成员的调用,可以用类名.成员名调用,无需创建对象。
- 静态成员方法不能调用实例对象。
- 即,静态成员方法能在对象中使用,但不能修改对象中的实例成员变量,也不能调用实例成员方法。
- 同样的,this与super关键字也不能被静态成员调用。
class Triangle{
static int value = 0;
int a, b, c;
static int modifyValue(){
//a=0; //会出错,因为该方法为静态方法,而a为实例变量。
value += 1;
return value;
}
public static void main(String args[]){ //编译后,会输出三行, 内容分别为1 2 3。
System.out.println(modifyValue());
System.out.println(modifyValue());
System.out.println(modifyValue());
}
}
静态初始化器
- 与构造方法类似,但静态初始化器只在类的第一次调用时触发。
- 结构为static{ 语句块 }
//实例成员与静态成员的代码中,加入这段代码
//输出结果会变成11 12 13。
static{
value = 10;
}
共有 0 条评论