java温习*(4):static关键字的应用---静态方法
应用二:static + 成员方法 vs 成员方法
概念:
静态方法:用static修饰的成员方法,通常也称为静态方法、类方法、全局方法等。
非静态方法:没有被static修饰的成员方法,也称为叫做非静态方法、实例方法,对象方法等。
特征:
与静态成员相似,静态方法属于整个类的,由类所进行维护,优先于对象而存在,因此可以通过类名和对象名两种方式访问,也因此在静态方法中无法直接访问同类中的非静态成员。
示例:
定义国产车类CarDemo,分别包含静态属性firm,对象属性color、price ,静态方法display。
定义测试类CarTest,针对CarDemo进行测试
备注:此处由于展示篇幅有限,暂不考虑属性的访问权限
- 当display方法中分别访问类内静态及非静态成员时:
错误提示:不能在静态方法中应出现this关键字
- 当修改方法内部,去掉this
- 修订display方法体,成功访问类内静态及非静态方法
总结:
1、静态方法中可以通过“类名.成员”或“成员”的方式访问类内静态成员/静态方法
2、不允许直接访问本类中的非静态成员/非静态方法
3、可以通过实例化产生本类对象,通过“对象.成员”的方式访问类内非静态成员/非静态方法。
此时输出结果为:
总结:
1、类外可应用“类名.成员方法”或“对象名.成员方法”的方式访问非私有静态方法
2、应用“对象名.成员方法”时会出现警告,但不影响程序运行。
- 类中添加非静态方法run,并在其中访问类内静态成员
总结:
1、非静态方法可以通过“类名.成员法”或“成员”或“this.成员”的方式访问类内静态成员/静态方法
2、应用“this.静态成员/静态方法”时会出现警告,但不影响程序运行。
- 分别在run和display方法中添加静态局部变量test
错误提示:test前的static修饰符无效,即不允许在方法内定义静态变量。
当去掉局部变量前面的static,正常显示
总结:
不允许在方法内部定义静态局部变量。