现在的位置: 首页 > 综合 > 正文

第七章Java语言类的特性

2013年10月03日 ⁄ 综合 ⁄ 共 2105字 ⁄ 字号 评论关闭

 7.1类的private成员与public成员

1).private 私有

如果在类的成员声明的前面加上修饰符private,则就无法从该类的外部访问到该类内部的成员,而只能被该类自身访问和修改,而不能被任何其他类,包括该类的子类来获取或引用,因此达到了对数据最高别保护的目的.

2).public 公共

 如果在类的成员声明的前面加上修饰符public,则表示该成员可以被所有其他的类所访问.但由于public修饰符会造成安全性和数据封装性的下降,所以一般应减少公共成员的使用.

3).friendly 友元

友元访问控制符可以省略.也就是说在类内声明类成员时,不外加任何访问控制修饰符,则该成员是一个友元.

 

7.2方法的重载

重载是指相同的方法名称,如果参数个数不同,或者是参数个数相同,但类型不同,则方法就具有不同的功能.

 

7.3构造方法

1).构造方法的作用与定义

构造方法的名称必须与它所在的类名完全相同.构造方法没有返回值,但在定义构造方法时,构造方法名前不能用修饰符void来修饰,这是因为一个类的构造方法的构造方法的返回值类型就是该类本身.构造方法定义后,创建对象时就会自动调用它,因此构造方法不需要在程序中直接调用,而是在对象产生时自动执行.这一点不同于一般的方法,一般的方法是在需要用到时才调用.

2).默认的构造方法(default constructor)

eg:系统产生默认的构造方法

Cylinder(){ }

3).构造方法的重载

构造方法的重载,可以让用户用不同的参数来构造对象.

4).从一个构造方法调用另一个构造方法

利用这个方法,可缩短程序代码,减少开发程序时间.从某一构造方法内调用另一个构造方法,是通过关键字this来调用的.

在某一构造方法中调用另一构造方法中必须使用this关键字来调用.

5).公共构造方法与私有构造方法

构造方法一般都是共有的(public),而不可以声明为私有的,这是因为它们在创建对象时,是在类的外部被系统自动调用的.

 

7.4静态成员

1).实例成员

在类定义中如果成员或者成员方法没有用static来修饰,则该成员就是实例成员.

2).静态变量

对于该类的任何一个具体对象而言,静态变量是公共的存储单元,不保存在某个对象实例的内存空间中,而是保存在类的内存空间的公共空间的公共存储单元中.

静态变量在某种程度上与其他语言的全局变量相似,如果不是私有的就可以在类的外部进行访问,此时不需要创建类的实例对象,只需要类名就可以引用.

使用格式:

        1)    类名.静态变量名

        2)   对象名.静态变量名

3).静态方法

静态方法实质上是属于整个类的方法,而不加static修饰符的方法,是属于某个具体对象的方法.

在静态方法中不能使用this和super.

因为this是代表调用该方法的对象,但现在静态方法既然不需要对象来调用,this也自然不应存在于静态方法的内部.

4).静态初始化器

由static修饰的一对花括号"{ }"括起来的语句组.在类被加载时只执行一次,与创建多少个对象无关.

 

7.5对象的应用

1)对象的赋值与比较

一般是先用new运算符创建对象,然后再对其进行操作处理.

当参数是基本数据类型时,是传值方式调用,而当参数是引用变量时,则是传址方式调用.

2)引用变量作为方法的返回值

eg:

class Person

{

  String name;

  int age;

  public Person( String name,int age )

  {

    this.name = name;

    this.age = age;

  }

  public Person compare( Person P )    //返回值类型为对象

  {

    if(this.age > P.age )  return this;    //返回调用该方法的对象

    else  return P;    //返回参数对象

  }

}

3).类类型的数组

用数组来存放对象,一般要经过如下两个步骤:

    1.声明类类型的数组变量,并用new运算符分配内存空间给数组;

    2.用new创建新的对象,分配内存空间给它,并让数组元素指向它.

eg:

public class app7_13

{

  public static void main( String[] args )

  {

    Person Per[];    //声明类类型的数组

    Per = new Person[3];    //用new为数组分配内存空间

    Per[0] = new Person( "zhangsan", 20 );    //用new运算符创建新对象,并分配给数组元素

    Per[1] = new Person( "lisi", 21 );

    Per[2] = new Person( "wangwu", 22 );

  }

}

4).以对象数组为参数进行方法调用

数组也可以存放对象.因此也可将对象数组作为参数传递到方法里.

public static int min_age( Person p[] )

{

  int min = 200;

  for( int i = 0; i < p.length; i++ )

    if( p[i].age < min )

      min = p[i].age;

  return min;

}

抱歉!评论已关闭.