l系统学习Java面向对象语言l成为一名熟练的Java程序员l获得SCJP证书制作:Linda欢迎参加JavaSL275培训PDF文件使用pdfFactory试用版本创建作者自我介绍姓名:Linda主要著作:《Tomcat与JavaWeb开发技术详解》《Java2认证考试指南与试题解析》下载SL275、SL285、SL314、SL425培训讲义:~hli4下载培训讲义的Java源程序:~hli4/javasource.htm与我联系:sky_cat_linda@yahoo.comPDF文件使用pdfFactory试用版本创建《Tomcat与JavaWeb开发技术详解》作者:孙卫琴编著出版社:电子工业出版社购买网址:下载本书样稿:~hli4/2.《Java2认证考试指南与试题解析》作者:孙卫琴编著出版社:上海科学技术出版社购买网址:下载本书样稿:~hli4/PDF文件使用pdfFactory试用版本创建第四章对象和类-定义封装、多态性以及继承-使用private及public访问修饰符-开发程序段创建并初始化一个对象-对一个特殊对象调用一个方法-描述构造函数及方法重载-描述this引用的用途-讨论为什么Java应用程序代码是可重复使用的-类、成员函数以及变量-构造函数-重载方法-覆盖方法-父类构造函数PDF文件使用pdfFactory试用版本创建变量,方法和初始程序-描述final类,方法和变量-列出访问控制级别-确认降级类并解释如何从JDK1.0升迁到JDK1.1到JDK1.2-描述如何应用收集和反射-在Java软件程序中,确认static方法和变量-public,private,protected和缺省变量-使用abstract类和方法-解释如何以及何时使用内部类PDF文件使用pdfFactory试用版本创建重载构造方法,参见Employee.javal缺省构造方法,参见Sample1.javal子类调用父类的构造方法,参见Son.java,PDF文件使用pdfFactory试用版本创建修饰符的修饰对象(类,方法,变量)l修饰符的作用l使用修饰符的限制PDF文件使用pdfFactory试用版本创建分别可以访问ClassA的哪些成员变量?PDF文件使用pdfFactory试用版本创建关键字–类(static)变量,参见Count.java–类(static)方法,参见Wrong.java–静态初始化程序,参见StaticBlock.javaPDF文件使用pdfFactory试用版本创建类变量在装载类的时候被分配内存并初始化,类只能被装载一次,所以类变量在内存中只有一个拷贝l实例变量在创建实例时被分配内存并初始化,所以每个实例都有各自的实例变量l同一个类的实例之间共享类变量PDF文件使用pdfFactory试用版本创建关键字–final类:不能被继承–final方法:不能被子类覆盖–final变量:必须被显式初始化的初始化,并且只能初始化一次,参见InitFinal0.javaPDF文件使用pdfFactory试用版本创建变量例:Whatwillhappenwhencompilethefollowingcode?publicclassTest{finalintx=0;Test(){x=1;}finalintaMethod(){returnx;}}PDF文件使用pdfFactory试用版本创建变量例:Whatwillhappenwhencompilethefollowingcode?1.classFinalTest{2.finalintq;3.4.FinalTest(){5.this(0);6.q=1;}7.8.FinalTest(intx){9.q=x;10.}10.}PDF文件使用pdfFactory试用版本创建只用来修饰方法。lnative方法用其它语言(如C语言)实现,所以没有程序代码块。publicstaticnativeintmyNativeMethod(intp);PDF文件使用pdfFactory试用版本创建当一个类直接继承另一个类,在声明这个类的时候,使用extends关键字。lJava中不支持多继承ClassCextendsClassA,ClassB~hli4PDF文件使用pdfFactory试用版本创建关键字可以将类声明为抽象类。2.用abstract关键字可以将方法声明为抽象方法。这种方法没有实现体。3.一个类中有抽象方法,这个类必须是抽象类4.抽象类中可以没有抽象方法PDF文件使用pdfFactory试用版本创建{publicstaticfinalintOPAQUE=1;publicstaticfinalintBITMASK=2;publicstaticfinalintTRANSLUCENT=3;publicintgetTransparency();}interfaceA{}interfaceB{}interfaceDextendsA,B{}//CORRECTinterfaceEimplementsA,B{}//ERRORPDF文件使用pdfFactory试用版本创建一个类能实现许多接口。publicclassMyAppletextendsAppletimplementsRunnable,MouseListener{}PDF文件使用pdfFactory试用版本创建{voidprintMessage();}classSayHelloImplimplementsSayHello{voidprintMessage(){System.out.println(Hello);}}PDF文件使用pdfFactory试用版本创建方法重载(overload)例如,Math类的用于取最大值的max方法,有多个重载方法。publicstaticintmax(inta,intb)publicstaticintmax(longa,longb)publicstaticintmax(floata,floatb)publicstaticintmax(doublea,doubleb)PDF文件使用pdfFactory试用版本创建方法覆盖(override)以下代码中子类覆盖了父类的一个方法,然后定义了一个重载方法,这是合法的。publicclassParent{publicvoidmethod(){System.out.println(“Parent”);}}publicclassChildextendsParent{publicvoidmethod(){System.out.println(“Child”);}//overridepublicintmethod(inta){//overloadreturn0;}}PDF文件使用pdfFactory试用版本创建子类方法不能缩小父类方法的访问权限例如以下代码,将导致编译错误。publicclassParent{publicvoidmethod(){}}publicclassChildextendsParent{privatevoidmethod(){}}PDF文件使用pdfFactory试用版本创建{}classExceptionSubextendsExceptionRoot{}publicclassParent{voidmethod()throwsExceptionSub{}}publicclassChildextendsParent{voidmethod()throwsExceptionRoot{};}PDF文件使用pdfFactory试用版本创建对于一个引用类型的变量,编译器按照它声明的类型处理。例如以下代码编译出错。Fatherwho=newSon();who.sonVar=“123”;who.sonMethod();如果要访问Son的成员,必须通过强制转换:((Son)who).sonVar=“123”;((Son)who).sonMethod();PDF文件使用pdfFactory试用版本创建多态性对于一个引用类型的变量,运行时按照它实际引用的对象处理。例如以下代码虽然编译可以通过,但运行时会抛出ClassCastException。Fatherwho=newFather();Sons=(Son)who;//throwexceptionwhenrunPDF文件使用pdfFactory试用版本创建多态性例如,对于以下这段代码:Fatherwho=newSon();System.out.println(“who.var=”+who.var);System.out.println(“who.staticVar=”+who.staticVar);who.method();who.staticMethod();运行时将会输出如下结果:who.var=FatherVarwho.staticVar=StaticFaterVarSonmethodStaticFathermethodPDF文件使用pdfFactor