Ch6 高级语言特征

上传人:油条 文档编号:26852816 上传时间:2018-01-02 格式:PPT 页数:88 大小:1.78MB
返回 下载 相关 举报
Ch6 高级语言特征_第1页
第1页 / 共88页
Ch6 高级语言特征_第2页
第2页 / 共88页
Ch6 高级语言特征_第3页
第3页 / 共88页
Ch6 高级语言特征_第4页
第4页 / 共88页
Ch6 高级语言特征_第5页
第5页 / 共88页
点击查看更多>>
资源描述

《Ch6 高级语言特征》由会员分享,可在线阅读,更多相关《Ch6 高级语言特征(88页珍藏版)》请在金锄头文库上搜索。

1、2018/1/2,1,高级语言特征,对象的构造和初始化,2018/1/2,2,对象的构造和初始化,分配新对象的空间,并进行默认的初始化。在java中,这两步是不可分的,可确保对象都有初值。执行显式的成员初始化。执行构造方法。,2018/1/2,3,显式初始化,如果类中定义了成员变量,并且在成员变量定义的同时赋值,则系统对这些成员进行初始化工作,这样的初始化称为显式初始化。public class InitDemoprivate int x1=25;private float y2=6.2f;private String name3= “Zhang Feng”;,2018/1/2,4,构造方法的

2、相互调用,public class StudentString name;int age;public Student(String s,int n)name=s;age=n;public Student(String s)name=s;age=20;public Student()name= “Unknows”;age=20;,2018/1/2,5,构造方法的相互调用,public class StudentString name;int age;public Student(String s,int n)name=s;age=n;public Student(String s)this(s

3、,20);public Student()this( “Unknows”);,2018/1/2,6,finalize()方法,作用:释放对象所占用的内存空间。protected void finalize() throws Throwable,2018/1/2,7,finalize()方法,class BaseString s;Base(String s)this.s=s;public void setString(String s)this.s=s;,2018/1/2,8,finalize()方法,public class finalizeTestpublic static void mai

4、n(String args)finalizeTest finaT=new finalizeTest();finaT.go();public void go()Base b1=new Base( “One”);System.out.println(“b1=”+b1.s);b1.setString(“ ”);System.out.println(“b1=”+b1.s);Base b2=new Base(“Two”);b1=b2;System.out.println(“b1=”+b1.s);System.out.println(“b2=”+b2.s);,2018/1/2,9,b1=Oneb1=b1=

5、Twob2=Two,类成员,2018/1/2,10,类成员,2018/1/2,11,静态变量,用static标记修饰的变量称为静态变量。当静态变量被标记为public,即使没有该类的实例时也可以从该类的外部访问。,2018/1/2,12,静态变量,class Countprivate int sum;public static int counter=0; /定义public的static变量counterpublic int count()counter+;sum=counter;return sum;,2018/1/2,13,静态变量,public class CountTestpubli

6、c static void main(String args)Count c=new Count();c.count();System.out.println(*);System.out.println(程序的运行结果是:);System.out.println(c.count();/在类的外部通过类名直接调用System.out.println(*);System.out.println(直接通过类名来调用属性:);System.out.println(Count.counter);,2018/1/2,14,静态变量,2018/1/2,15,静态变量,为了与非共享的成员或者实例变量区分,有时

7、候这样的变量叫做类变量(class variable)。class Countprivate int sum;public static int counter=0; /定义public的static变量counterpublic Count()counter+;sum=counter;,2018/1/2,16,静态变量,在某种程度上,static变量和其他语言的全局变量比较接近。class StaticVarpublic static int number;public class OtherClasspublic void method()int x=StaticVar.number;,2

8、018/1/2,17,静态方法,被static标记修饰的方法叫做静态方法,也称之为类方法。即使没有任何该类的实例化对象,静态方法也可以被调用。,2018/1/2,18,静态方法,public class GeneralFunctionpublic static int addUp(int x,int y)return x+y;public class UseGeneralpublic void method()int a=9,b=10;int c=GeneralFunction.addUp(a,b);System.out.println(addUp() gives +c);,2018/1/2,

9、19,静态方法,静态方法就不能访问与它本身的参数以及静态变量分离的任何常量。静态方法不能被覆盖成非静态的。public class Wrongint x;public static void main(String args)x=9; /COMPILER ERROR!,2018/1/2,20,关键字final,2018/1/2,21,final,final类是不能继承的,不可变性表现在无法继承;final方法是不能被覆盖的;final变量是常量,一经赋值就不能再改变。,2018/1/2,22,final类,使用final类的目的:这个类不要再被改变,防止重写后对原来的定义有曲解;类的定义非常完

10、整,不需要再扩展。,2018/1/2,23,final类,final class FatherString str=这是父类;public void outPut()System.out.println(str);public class Son extends Fatherpublic static void main(String args)Son tom=new Son();tom.outPut();,2018/1/2,24,final类,class FatherString str=这是父类;public void outPut()System.out.println(str);pub

11、lic class Son extends Fatherpublic static void main(String args)Son tom=new Son();tom.outPut();,2018/1/2,25,final方法,使用final方法的目的:出于安全的原因等,被关键字final标记修饰过的方法就不能再被覆盖。被关键字final标记修饰的方法有时被用于优化。编译器能产生直接对方法调用的代码,而不是通常的涉及运行时查找的虚拟方法调用,2018/1/2,26,final方法,class FatherString str=这是父类;public void outPut()System.

12、out.println(str);public final void eatFood()System.out.println(Im eatting!);public class Son extends Fatherpublic void eatFood()System.out.println(Im eatting foods);public static void main(String args)Son tom=new Son();tom.outPut();tom.eatFood();,2018/1/2,27,final方法,class FatherString str=这是父类;publi

13、c void outPut()System.out.println(str);public void eatFood()System.out.println(Im eatting!);public class Son extends Fatherpublic void eatFood()System.out.println(Im eatting foods);public static void main(String args)Son tom=new Son();tom.outPut();tom.eatFood();,2018/1/2,28,final方法,如果一个类被定义为终极类,则其中的

14、方法自动称为终极方法。因为此时再也无法覆盖它们。所以这与我们将一个方法明确声明为final一样。可为final类内的一个方法添加final指示符,但这样做没有任何意义。,2018/1/2,29,final变量,一经赋值,就不能再改变其值。public final int MAX_ARRAY_SIZE=25;public class Son extends Fatherpublic final int i=25;public void outPut()System.out.println(i);public static void main(String args)Son tom=new Son();tom.outPut();,2018/1/2,30,i=i*i;,final变量,如果将一个引用类型的变量标记为final,那么这个变量将不能再指向其他对象,但它所指对象的取值仍然是可以改变的。class Carint number=1234;public class FinalVariablepublic static void main(String args)final Car mycar=new Car();/终极变量mycar.number=8888;/可以被改变!mycar=new Car();/不能再指向其他实例,错误!,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号