4.2方法
*递归方法一般由两部分组成:1、递归体:递归的方式;2、递归出口:递归终止的条件。
*Java语言允许在一个类中定义几个同名的方法,但要求这些方法具有不同的参数特征,这种做法称为方法的重载
(overloaded)。
1、参数个数/2、参数类型/3、参数次序
注意:返回值类型不是重载的依据。
*重载方法的调用:当类中有多个重载的方法,调用该类的某个重载方法时,Java能够根据实参表的不同区分实际调
用的是哪一个方法。
Eg. 重载方法中有一个可变长度的形参。
Public void test(Stringmsg);
Public void test(String… books);
则
olv.test();//调用test(String,,, books);
olv.test(“aa”,”bb”);//调用test(String…books);
olv.test(“aa”);//调用test(String msg);
如只传入一个参数,有需要调用参数长度可变的方法,则可采用如下调用形势:olv.test(new String[]{“aa”});
4.3变量
*变量的分类
变量:成员变量和局部变量
成员变量:实例变量(不用static修饰);类变量(使用static修饰)。
局部变量:形参;方法内定义的局部变量;代码块中定义的局部变量。
注意变量名的命名规则:从语法角度看,是一个可发的标识符;从程序可读性角度看,是多个有意义的单词组合而成,其中第一个单词首字母小写,后面每个单词首字母大写。
*成员变量:在类范围里定义的变量。
1、类变量:定义时使用static修饰的成员变量
(1)它从这个类的准备阶段起开始存在,直到系统完全销毁这个类时消亡---与类共存亡。
(2)访问类变量:类名.类变量名
2、实例变量:定义时不使用static修饰的成员变量
(1)它从这个类的实例被创建开始起存亡,直到系统完全销毁这个实例---与实例共存亡。
(2)访问实例变量:实例名.实例变量名。
注意:虽然也可以通过实例名访问类变量,但是这个实例访问的并不是这个实例的变量,依然访问的是对应类的变
量。
*局部变量
1、形参:在定义方法首部时定义的变量,在整个方法内有效,方法结束时消失。
2、方法局部变量:在方法体内定义的局部变量,从定义该变量的地方生效,到该方法结束时失效。
3、代码块局变量:在代码块中定义的局部变量,只在该代码块内有效。
注意:(1)局部变量除形参外,都必须显示初始化。
(2)允许局部变量和成员变量名同名,可使用this或类名作为访问者来限定访问成员变量。
4.4隐藏和封装
*封装:(Encapsulation)是面向对象三大特征之一(封装、继承、多态),它指的是将对象的状态信息隐藏在内
部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。
对一个类或对象实现良好的封装,可以实现以下目的:
(1) 隐藏类的实现细节。
(2) 让使用者只能通过事先预定的方法访问数据,从而可以在该方法里加入控制逻辑,限制对属性不合理访问。
(3) 可进行数据检查,从而有利于保证对象信息的完整性。
(4) 便于修改,提高代码的可维护性。
Eg.定义Person类,实现良好的封装。
Publicclass Person
{
Private String name;
Private int age;
public void setName(String name)
{
If(name length()>6||namelength()<2)
{System.out.println(“您设置的人名不符合要求”);}
Else
{this.name=name;}
}
Public String getName()
{return this.name;}
Public void setAge(int age)
{
If(age>100||age<0)
{System.out.println(“您设置的年龄不合法”);}
else
{this.age=age;}
}
public int getAge()
{return this.age;}
}