欢迎来到天天文库
浏览记录
ID:57688533
大小:12.00 KB
页数:2页
时间:2020-09-01
《java之中的静态变量与静态方法的继承与覆盖问题.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、java之中的静态变量与静态方法的继承与覆盖问题/*classAA{publicstaticvoida(){System.out.println("a");}}classBextendsAA{//staticvoidbb(){// a();//}}classTest{publicstaticvoidmain(String[]args){B.a();//输出a,证明静态方法可以被继承}}*///在子类中并没有必要通过再造一个方法,在这个方法中调用父类中的方法。//子类默认的继承了父类的所有方法。也就是说,通过子类类名(对于静态//方法来说)或对象名来直接调用父类的方法。//不
2、能被覆写,例子:classA{protectedstaticintnum=2;publicstaticvoida(){System.out.println("a");}}classBextendsA{protectedstaticintnum=4;publicstaticvoida(){System.out.println("b");}}publicclassTest1{publicstaticvoidmain(String[]args){Aa=newB();a.a();//输出结果是a,说明静态方法不能再子类之中被覆盖。System.out.println(a.num);//
3、输出2,说明静态变量是不能被在子类中被覆盖的。System.out.println(A.num);System.out.println(B.num);//通过类名调用被覆盖的静态变量可以显示子类的被覆盖的静态变量。}}//java不推荐用对象调用static方法,这会使人混淆,请大家注意。但编译的时候,静态变量的值已经确定,//而对于多态中的编译问题,对于一个静态变量java只会看父类之中是不是有这个变量。也就是说多态对于//静态变量和静态方法是没有作用的。//java的这个规定是可以理解的。静态的说明只有一个固定的地址,一旦确定之后,就不能更改。而java中//的多态是指当子
4、类中的方法或变量覆盖了父类中的时,编译的时候,java首先不会确定他们的具体内容,//当具体执行时看其属于什么子类在确定最后的执行。这样的话两者正好相互矛盾。因此,静态的问题并不//存在多态问题,因为它是一成不变的。//将变量定义为public可见性还是protected可见性,都可以通过类名或者对象名来直接调用它,而不需要//通过特定的方法get###();
此文档下载收益归作者所有