java中static的用法及注意点
在关键词的使用上,我们已经对static方法有所了解,为了防止在使用时出现一些不必要的错误,了解它的使用范围是每个人都要掌握的。本篇把static的使用注意点分为两个方面,一个是访问的范围,另一个是有关方法调用的注意,下面我们一起来看看完整的static使用注意点吧。
1、使用static方法的时候,只能访问static声明的属性和方法,而非static声明的属性和方法是不能访问的。
packagecom.jk.ref; classPeople{ Stringname; privatestaticStringcountry="中国"; publicPeople(Stringname){ this.name=name; } publicvoidtell(){ System.out.println("name:"+name+""+"country:"+country); } /** *@returnthecountry */ publicstaticStringgetCountry(){ returncountry; } /** *@paramcountrythecountrytoset */ publicstaticvoidsetCountry(Stringcountry){ People.country=country; } } publicclassStaticDemo01{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub People.setCountry("shanghai"); Peopleps1=newPeople("zhangsan"); //People.country="上海"; ps1.tell(); Peopleps2=newPeople("lisi"); //ps2.country="上海"; ps2.tell(); Peopleps3=newPeople("wangwu"); //ps3.country="上海"; ps3.tell(); } }
2、父类引用只能调父类和子类重写方法,父子同名方法不会覆盖而是遮蔽。
publicclassTestMain{ publicstaticvoidmain(String[]args){ Supersup=newSub();//封装(向上造型) sup.m1();//父类引用无法调子类未重写方法,输出miinSuper sup.m2();//调用子类方法m2,继承先构建父类方法,方法名相同覆盖(重写)方法,输出m2inSub Subsub=(Sub)sup;//拆箱(向下造型) sub.m1();//调用子类静态方法m1,先构建父类方法,方法名相同方法名相同遮蔽方法,输出m2inSub sub.m2();//调用子类方法m2,继承先构建父类方法,方法名相同覆盖(重写)方法,输出m2inSub } } classSuper{//父类 publicstaticvoidm1(){//父类静态方法 System.out.println(“m1inSuper”); } publicvoidm2(){//父类方法 System.out.println(“m2inSuper”); } } classSubextendsSuper{//子类 publicstaticvoidm1(){//子类静态方法 System.out.println(“m1inSub”); } publicvoidm2(){//子类方法 System.out.println(“m2inSub”); } }
内容扩展:
深度总结
引用一位网友的话,说的非常好,如果别人问你static的作用;如果你说静态修饰类的属性和类的方法别人认为你是合格的;如果是说可以构成静态代码块,那别人认为你还可以;如果你说可以构成静态内部类,那别人认为你不错;如果你说了静态导包,那别人认为你很OK;
那我们就先在这几方面一一对static进行总结;然后说一些模糊的地方,以及一些面试中容易问道的地方;
static方法
static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
到此这篇关于java中static的用法及注意点的文章就介绍到这了,更多相关java中使用static的注意点内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。