资源描述:
《讲义corejava7advanced language features》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、讲义CoreJava7AdvancedLanguageFeaturesModule6:AdvancedLanguageFeaturesStaticvariables,methodsandinitializationblocks静态变量,静态方法,静态块classloaderloadclass,initializestaticvariables,andruninitializationblocks,类装载器装载类,初始化静态变量,运行静态块(只一次,对象生成之前)!!!allstaticblockcanbeexecutedonlyonc
2、e,andbeforenewobjectsarecreated所有静态块只被运行一次,而且对象生成之前静态变量可以被某个类的所有实例所共享,也可以不用生成实例直接使用A.name(staticStringname;staticvoidprintMsg(){})静态块初始化静态变量只能调用一次static{}静态块要在构造方法创建之前,做一些初始化的工作Virtualmachinedo:1、loadclassbyclassloader*initstaticvariablesonlyonce*callstaticinitiationBlo
3、cksonlyonce2、createobject---------------------------------------------------------------------------------------finalclasses,methodsandvariables1.Afinalclasscan'tbeextended:finalclass不能继承2.Afinalmethodcan'tbeoverridden:finalmethod不能重写3.Afinalvariablecan'tbechanged:final
4、variable不能改变primitivetype:finalintx=9;x=90;//wrong!!!!referencetype:finalTeachert=newTeacher("zhang",27);t=newTeacher("zhang",27);//wrong!!!!t.setName("wang");//ok-----------------------------------------------------------------------------------------AbstractClass抽象类ab
5、stractclassShape{privateintx,y;publicShape(intxx,intyy){x=xx;y=yy;}publicShape(){}publicvoiddraw(){System.out.println("drawShape");}publicabstractvoidprint();publicabstractdoublegetArea();}1.Aclasshasabstractmethodsmustbedeclaredasabstractclass有抽象方法的类必须声明为抽象类2.Anabstrac
6、tclasscannotbeinstantiated抽象类不能实例化,但可以定义成一个变量。newShape(3,7);//!!!!Wrong---------------------------------------------------------------------------classCircleextendsShape{intr;//Math.PI*r*r//contructorspublicCircle(intx,inty,intr){super(x,y);this.r=r;}/*publicCircle(intr
7、){}*//*publicCircle(){}*/publicvoiddraw(){System.out.println("drawCircle");}publicvoidprint(){}/*publicdoublegetArea(){return?;}*/}classRectangleextendsShape{intwidth,length;//contructorspublicRectangle(intx,inty,intwidth,length){super(x,y);this.width=width;this.length=
8、length;}/*publicRectangle(intwidth,length){}*//*publicRectangle(){}*/publicvoiddraw(){System.out.println("draw