- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7 章高级类特性 - 华清远见
第 7 章 高级类特性
本章详细介绍 static 变量、方法和初始化段的概念和用法;final 数据、方法和类的用
法;抽象类和接口的概念,以及它们之间的联系和区别;多态概念以及内部类的概念和用
法;最后,对一些常用的修饰符做了一个简单的总结。
7.1 static 关键字
7.1.1 知识准备:static 概述
通常我们在创建一个类时,是在描述那个类的对象的外观与行为。只有用 new 创建那
个类的对象,数据存储空间才被分配,其方法才供外界调用。但是有如下两种情形:第一
种是只想为特定域分配单一的存储空间,不考虑究竟创建多少个对象,甚至根本就不用创
建任何对象;另一种是,希望某个方法不与包含它的类的任何对象关联在一起,也就是说
即使没有创建对象,也可以调用这个方法。通过 static 关键字可以满足这两方面的需要。
使用时,在声明类的成员如方法、属性乃至自由代码块前面加上“static ”这个修饰符:
public class StaticTest {
//静态变量
static int i = 27;
//静态方法
static void staticMethod(){
StaticTest.i++;
}
}
实例变量用于描述单个实例的状态,而类变量用于描述类的状态,和具体的实例无关。
实例方法用于操作实例变量并维护特定实例的状态,而类方法并不了解单个实例的状态。
在 Java 中,static 最常用在 Java 应用程序的入口方法 main()前面,用于修饰 main()方
法,表示 main()方法是一个类方法。我们在执行一个应用程序的时候,解析器将会寻找这
个 main()方法,之所以将它设置为类方法,是因为在调用这个 main()方法之前,还没有任
华清远见—高端IT就业培训专家
何对象存在,所以,如果不将它设置为类相关的,则没有办法得到任何的对象,也就无法
调用这个 main()方法。
7.1.2 知识准备:static 变量的引用方法
1.通过对象定位变量
在 7.1.1 节中我们定义了 StaticTest 类,并在类中定义了 static 变量。现在我们通过创建
对象来引用它:
public class StaticTest {
static int i = 27;
public static void main(String args[]) {
StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();
System.out .println(st1.i + st2.i);
}
}
现在,尽管我们创建了两个 StaticTest 对象,但它们仍然只占据 StaticTest.i 的一个存储
空间。这两个对象都共享同样的 i 。此时,st1.i 还是 st2.i 都有同样的值 27 。
2 .通过类名直接引用
我们可以直接通过类名来引用 static 变量,这对非静态成员是不行的。例如,语句
StaticTest.i++;引用 static 变量的首选方式是通过类名调用,一方面这样强调了变量的 static
结构,另一方面在某些时候也方便了编译器进行优化。
类似的逻辑也应用于静态方法,我们可以像调用其他方法一样通过一个对象来引用,
或者可以通过特殊语法形式 ClassName.method()加以引用。
注意:
静态方法中只能调用类中的静态成员。
7.2 final 关键字
在 Java 的类、方法和变量前面可以加上 final 关键字,final 关键字表示它修饰的类、
方法或变量不可被改变。
7.2.1 知识准备:final 数据
146
华清远见—高端IT就业培训专家
4
文档评论(0)