资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
目录Java主要修饰符的使用“说明书”1一、public、protected和private2一)对类的类型的修饰2二)未标注此类类型的成员变量和成员函数2三)public、protected和private在子类中的可见情况3四)public、protected和private在非子类中的可见情况7二、final9(一)对类类型的修饰10(二)final修饰的成员函数10(三)final修饰的成员变量11三、static11附录:原函数14一)father.java14二)childinsamepa.java15三) childindifferentp.java16四)AFINALCLASS.java17五)DEFFERENTPAKAEGEIMPORT.java18六)FORSTATIC.java19七)ROOT.java19武汉理工软件1003班陈莹伊Java主要修饰符的使用“说明书”示例用工作空间结构:一、public、protected和private一)对类的类型的修饰类的类型只能使用public修饰,或者省略。二)未标注此类类型的成员变量和成员函数未标注类型的成员变量和成员函数在java类中的使用可见类别不同于public、protected和private。当成员变量和成员函数无这三个修饰符修饰,无论是该类的子类还是非子类,只要是和该类属于同一个包,这些成员变量和成员函数都是可见的。而对于不属于同一个包的类,它们则是不可见的。示例用class father的成员列表:在同包子类中的可见情况:在不同包子类中的可见情况:在同包非子类中的可见情况:在不同包非子类中的可见情况:三)public、protected和private在子类中的可见情况father类成员表列:a)对于子类而言,无论是否属于同一个包,父类中的public类型和protected类型变量和函数在子类中是可见的。在同包中的子类:在不同包中的子类:b)子类可通过父类的public类和protected类成员函数调用父类中的private类变量和函数,如父类的private变量的getter和setter函数。示例用子类函数:public void test1()/证明子类可以调用父类的public和protected类型this.provan=9;this.pubvan=19;public void test2()/通过set函数来影响父类的private成员变量this.provan=99;this.pubvan=100;this.setPrivan(101);在main函数中的使用:childinsamepa cis=new childinsamepa(22,23,24);cis.printfa();cis.test1();cis.printfa();cis.test2();cis.printfa();运行结果截图:c)对于成员变量而言,子类中可以存在父类的同名变量且可以为不同的修饰符所修饰。这些成员变量在子类的变量使用时覆盖了父类继承下来的同名变量,但在使用父类的变量使用函数时,则对于这些函数,这些同名变量对他们没有任何影响。既使用父类的变量使用函数时,受到使用的是父类继承下来的成员变量而非子类重新定义的成员变量。示例用子类变量和该变量的调用函数:public int provan;public void test()/protected变量调用实验this.provan=12;在main函数中的使用:childindifferentp cid=new childindifferentp(121,122,123);cid.printfa();cid.test();cid.printfa();System.out.println(cid.provan);运行结果截图:未定义子类变量provan且在主函数中没有打印provan语句时:定义了子类变量provan时:d)对于普通的public和protected函数而言,子类可使用同名的函数对其进行彻底的覆盖,既即使在使用父类的函数对这些被覆盖的函数进行调用时,所调用的也是子类中的同名函数。这些函数可以和父类所定义函数类型不相同。函数体:public void pubfunc()/覆盖System.out.println(this is a public function of this child class.);在main函数中的使用:childinsamepa cis=new childinsamepa(22,23,24);cis.printfa();cis.printpubfunc();运行结果截图:e)对于普通的private函数而言,其覆盖关系类似于成员变量,既子类中的同名函数无法对其进行彻底的覆盖。示例用同名函数:在main函数中的使用:childindifferentp cid=new childindifferentp(121,122,123);cid.printfa();System.out.println();cid.prifunc();运行结果截图:换行前的部分说明printfa函数调用的是父类继承下来的prifunc函数。四)public、protected和private在非子类中的可见情况1)public全区域可见。2)对于protected类的变量和函数而言,当引入类和被引入类同包时,这些变量和函数可见;当引入类和被引入类非同包时和,这些变量和函数则是不可见的。3)private不可见引入类和被引入类同包时的情况:示例用同包非子类函数:public void UseFather()father fa=new father(10,10,10);System.out.println(Now it use the function it can use in class father.);fa.profunc();fa.pubfunc();在main函数中的使用:AFINALCLASS afc=new AFINALCLASS();afc.pronounce();afc.UseFather();运行结果截图:引入类和被引入类不同包的情况:示例用非同包非子类函数:public void UseClassFather()father fa=new father(12,12,12);System.out.println(This is a normal class in different package of class father.);System.out.println(Now it use the function it can use in class father.);fa.pubfunc();在main函数中的使用:DEFFERENTPAKAEGEIMPORT dpi=new DEFFERENTPAKAEGEIMPORT();dpi.UseClassFather();运行结果截图:二、final示例用的final类:public final class AFINALCLASS final public double pi=3.1415926;public void pronounce()System.out.println(This is a final class,it cant have child.);public void UseFather()father fa=new father(10,10,10);System.out.println(Now it use the function it can use in class father.);fa.profunc();fa.pubfunc();/public void UseForTest()/证实final前缀的变量不可改变值/pi=9;/(一)对类类型的修饰对于一个类而言,如果它前面带final修饰符,则这个类是不可用被继承的,既这个类不能有子类。当试图对final类的类进行继承时:(二)final修饰的成员函数对于一个成员函数而言,当其前面有final对其进行修饰时,这个函数不可被这个类的子类的函数所覆盖。示例用父类中的函数:final public void AFinalFunc()System.out.println(This is a final function,it cant be covered.);当试图在子类中对其进行覆盖时:(三)final修饰的成员变量对于一个成员变量而言,当其前面有final对其进行修饰时,这个变量须在定义时对其进行赋值,且不可用任何方式对其进行修改。这就是说,final可以用于定义常量。如果定义final变量时不进行赋初值: 定义final变量:final public double pi=3.1415926;如果试图在函数中重新对其进行赋值:三、staticStatic修饰的成员函数和成员变量被称为类方法和类成员变量。示例用含有static函数和变量的类:public class FORSTATIC static int count=0;int number;static public void StaticPrint()System.out.println(this is a class with static functions and vaniables.);count+;/number=5;System.out.println(count = +count);public void Print()/static int i;count+;number=5;System.out.println(count = +count);System.out.println(number = +number);1)类方法可以直接通过类名进行调用,而不必建立类的对象对其进行调用。Java类的编译器建议直接使用类名调用类方法,当使用对象调用类方法时可能会出现以下情况:2)类成员变量为类的所有对象所共同享有的公共区,当程序运行开始就为其分配内存空间,在程序结束时才进行回收,其间不同的变量都可以对它进行使用修改。且类成员变量可以不经过对象对其进行使用。上面的实例类的类函数中就进行了对类成员变量的使用。在main函数中的使用:FORST
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号