Java语言程序设计 教学课件 作者 于红 第4章__Java面向对象程序设计.ppt
文本预览下载声明
内部类可以声明为static,此时内部类与外部类之间没有相互访问成员的能力,此时,内部类没有指向外部类对象的引用,创建内部类对象时,无需创建外部类对象。非static内部类中不能有static成员,而static内部类中则可以。所以说,static内部类只是在外部类的命名空间中而已。 4.7.3 匿名内部类 内部类还可以匿名使用。 DataGram类中的data()方法中使用的就是匿名内部类。data()方法要返回一个Data类型的值,但是表达返回值的那个类并没有名称,直接产生了返回值,这就是匿名类。这个匿名实现Data接口,并自动向上转型为Data的引用。 4.8本章小结 本章是Java语言程序设计的核心章节,主要介绍了Java面向对象程序设计的封装、继承和多态性,以及由这三个特性展开的一些基本用法,包括类的声明,成员变量和方法的常规用法,对象的创建和使用;继承时子类对象的构建过程;以及Java中的static、final、super和this等关键字用法的详细介绍。Object作为所有类的根类,对其常用的几个方法进行了简单阐述;最后,对Java特有的区别于其他语言的接口和内部类也作了介绍。 1)编译期final变量 在定义final变量时直接给变量赋初始值,编译的时候,程序中其他地方出现的该标识符由所赋的初值代替。例如: final int DormCount=10; 定义DormCount为10,编译时,程序的其他地方出现的DormCount均用10来代替。 2)执行期final变量 Java中允许在定义final变量的时候不给出初值,而是在执行期给final变量赋初值。如果在定义final变量时使用表达式赋初值或在构造方法中赋初始值,这种final变量在被分配内存空间时赋初值,赋初值之后其值不能被改变。 例如: public class Dorm { int final r=(int)(10*Math.random()); final int DormSize; Dorm() { DormSize=8; } } 与上面定义的DormCount不同,类Dorm中的final变量r和DormSize在Dorm类的不同对象中可以有不同的值,但是在同一个对象中该final变量的值保持不变。 (2)static final变量 显然上面的思考题的结果是每个对象有一个DormSize,因此两个对象有2个DormSize,那么是否可能让内存中只有一个DormSize呢? 如果用static修饰final变量,那么这个final变量在内存中只有一份。关于static final变量,有以下两点需要说明: 1)static final变量不能在构造方法中赋值,必须在定义的同时赋值。 2)编程习惯把这种编译期final变量名称用大写字母,如果多个单词,用“_”分隔。 (3)引用类型的final变量 前面例子中用final修饰的都是基本数据类型变量,用final修饰引用变量时,有特别的意义。引用变量本身不允许改变,但是其实体内容却可以被改变。 2.final方法 用final修饰的方法不能被重写,恰当地使用可以提高效率。当子类继承父类后,final方法不能被子类重写,在实际开发中根据需要,如果不想让某个方法的行为被子类改变,就将方法定义为final类型;此时,该方法在编译期绑定,提高了效率。 3.final类 用final修饰的类不能被继承,即该类不能有子类。final类中的方法都是final方法,无需显式地指明。 4.4 对象的生命周期 Java中,一切都看做是对象,对象是有生命的。从对象创建到对象清除,对象存在的这段时间称为对象的生命周期。对象生命周期受作用域限制。 Java允许在任何块中声明变量,块由“{”开始,由“}”结束。一个块定义一个作用域,同时可以用public, protected,默认和private说明变量的作用域。作用域决定了对象在程序中的可见性,同时也部分地确定了对象的生命周期。进入到对象的作用域创建对象,离开对象的作用域则清除对象。也就是说,对象在作用域之外不再存在。作用域从空间上限制对象,生命周期从时间上限制对象。 1.Java变量的分类及作用域 (1)成员变量:作用域为整个类。 (2)局部变量: 1)方法参数:作用域为方法体。 2)方法内局部变量:必须先声明后使用且必须赋初值,作用域为变量声明处至方法结束。 3)模块内局部变量:必须先声明后使用且必须赋初值,作用域为变量声明处至块结束。
显示全部