首页 百科知识 实例方法与类方法

实例方法与类方法

时间:2022-02-19 百科知识 版权反馈
【摘要】:4.5.2 实例方法与类方法被static修饰的方法称为类方法,而没有被static修饰的方法称为实例方法。实例方法可以直接访问当前对象的实例变量和实例方法,也可以访问类变量和类方法。一般来说,把实例变量声明为private,向外提供get方法及set方法访问该实例变量。模仿例4-15:使用get方法及set方法,改写完善例4-5的Humankind类。

4.5.2 实例方法与类方法

被static修饰的方法称为类方法(或静态方法),而没有被static修饰的方法称为实例方法。

在使用类方法和实例方法时,应注意以下几点。

(1)调用方式不同

·实例方法属于实例,必须通过实例调用;

·类方法属于类,一般通过类名调用,也可以通过实例调用。

具体方法调用格式:

·方法调用代码与被调用方法在同一个类中:方法名([实参表])

·方法调用代码与被调用方法不在同一个类中:对象引用.方法名([实参表])

·方法调用代码与被调用方法不在同一个类中:类名.方法名([实参表])

(2)访问的成员不同

·实例方法可以直接访问该类的实例变量和实例方法,也可以访问类变量和类方法。

·类方法只能访问该类的类变量和类方法,不能直接访问实例变量和实例方法。

【例4-13】 类方法不能直接访问实例变量的举例。

编译时错误信息:nonstatic variable mystring cannot be referenced from a static context “System.out.println(mystring);”。

分析与思考:编译错误原因是类方法不能直接访问实例的变量。解决的办法是将实例变量mystring改成类变量。

例4-13改正1:

类方法要访问实例变量或调用实例方法,必须首先获得该实例的引用值,然后通过该引用值访问实例变量或调用实例方法。引用值可以由类方法代码自己创建,也可以通过参数传递获得。

例4-13改正2:

分析与思考:先在main()类方法中创建No StaticError类的实例,并将实例的引用值赋给变量obj,通过obj访问实例变量mystring。

实例方法可以直接访问当前对象的实例变量和实例方法,也可以访问类变量和类方法。

例4-4的Circle类中的一个实例变量radius,CircleTest类中有程序段如下:

该程序段有一个隐含的问题:如果obj.radius=10;改为obj.radius=-10;,程序虽然能执行,但是,半径为负数是不符合常理的。造成这种情况的原因是:其他应用程序能直接访问对象的radius,却不能保证radius的数值在合理的范围内。

一般来说,把实例变量声明为private(只能被这个类的成员访问,在类外不可见),向外提供get方法及set方法访问该实例变量。通过这种策略,避免类外代码直接操作实例变量。即相对于类外代码而言,实例变量隐藏起来(看不见),无法直接操作。

get方法的功能是取得成员变量的值。为了便于记忆和阅读,get方法名以“get”开头,后面是成员变量的名字。get方法的格式如下:

set方法的功能是修改成员变量的值。为了便于记忆和阅读,set方法名以“set”开头,后面是成员变量的名字。set方法的格式如下:

【例4-14】 使用带get方法及set方法,完善例4-4的Circle类。

程序运行结果:

分析与思考:当设置半径为负数时,set方法避免了错误发生。

模仿例4-14:使用带get方法及set方法,改写完善三角形类。

【例4-15】 模仿例4-13,使用带get方法及set方法,改写完善例4-6的Employee类。

程序运行结果:

分析与思考:使用get方法及set方法,实现了对对象状态的设置和获取。使用类变量实现了自动生成职工的工号。

模仿例4-15:使用get方法及set方法,改写完善例4-5的Humankind类。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈