java静态内部类和非静态内部类的区别_静态内部类有什么问题

java静态内部类和非静态内部类的区别_静态内部类有什么问题一、非静态内部类:1、变量和方法不能声明为静态的。(类的编译顺序:外部类–静态方法或属性–内部类,如果内部类声明为静态的,造成编译顺序冲突。个人理解)2、实例化的时候需要依附在外部类上面。比如:B是A的非静态内部类,实例化B,则:A.Bb=newA().newB();3、内部类可以引用外部类的静态或者非静态属性或者方法。二、静态内部类:1、属性和方法可以声明为静态的或者非静态的…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、非静态内部类:

1、变量和方法不能声明为静态的。(类的编译顺序:外部类–静态方法或属性–内部类,如果内部类声明为静态的,造成编译顺序冲突。个人理解)

2、实例化的时候需要依附在外部类上面。比如:B是A的非静态内部类,实例化B,则:A.B b = new A().new B();

3、内部类可以引用外部类的静态或者非静态属性或者方法。

二、静态内部类:

1、属性和方法可以声明为静态的或者非静态的。

2、实例化静态内部类:比如:B是A的静态内部类,A.B b = new A.B();

3、内部类只能引用外部类的静态的属性或者方法。

4、如果属性或者方法声明为静态的,那么可以直接通过类名直接使用。比如B是A的静态内部类,b()是B中的一个静态属性,则可以:A.B.b();

三、关于java静态方法的相关总结:

一个类的静态方法只能访问静态属性(静态方法是属于类的,而普通方法是属于对象的。)

一个类的静态方法不能够直接调用非静态方法;
如访问控制权限允许,static 属性和方法可以使用类名加“.”方式调用;当然也可以使用实例加“.”方式调用;
静态方法中不存在当前对象,因而不能使用“this”,当然也不能使用”super”;
静态方法不能被非静态方法覆盖;
构造方法不允许声明为 static 的;
局部变量不能使用static修饰;

问题:为什么一个类的静态方法只能访问静态属性或静态方法?

回答:静态方法是属于类的,而普通方法是属于对象的。
属于类的静态方法可以在对象不存在的时候就能访问到,而普通方法必须先new一个对象才能用这个对象访问
。当我们访问调用静态方法的时候(使用类名.静态方法名)这个时候就没有对象创建,所以普通方法是访问不到的。
为了避免这种错误,所以java就不允许在静态方法中访问非静态方法。可以想一下main方法。

原文地址:http://www.cnblogs.com/aademeng/articles/6192944.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183257.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android一键换手机,不同品牌手机一键换机:换新手机怎么转移数据?「建议收藏」

    android一键换手机,不同品牌手机一键换机:换新手机怎么转移数据?「建议收藏」我们正处于一个数码产品更新换代非常快速的时代,很多消费者会紧跟时代潮流,经常更换新手机,但是更换手机之后我们通常需要将旧手机里的数据进行转移,不同品牌之间的手机怎么进行一键换机呢?以安卓手机更换苹果手机转移数据为例:1、首先我们需要在安卓手机上安装“转移到iOS”APP,通过该应用我们可以将安卓手机的数据转移到新的苹果手机上2、确保安卓设备处于WiFi状态3、将安卓设备以及苹果设备连接电源4、设置…

    2022年5月26日
  • 计算机审计学总结,审计实务实验报告总结审计实训实验报告计算机审计实验总结.docx…

    计算机审计学总结,审计实务实验报告总结审计实训实验报告计算机审计实验总结.docx…

    2021年11月27日
  • String 字符串 转成List 集合

    String 字符串 转成List 集合第一:代码@RequestMapping(value="/addUserDoMenuPrivilege",method=RequestMethod.POST)@ResponseBodypublicStringaddUserDoMenuPrivilege(intuserID,StringuserCode,Stringmenu_codeList,StringpricodeLis…

    2022年5月15日
  • getchar用法[通俗易懂]

    getchar用法[通俗易懂]getchar用法1.从缓冲区读走一个字符,相当于清除缓冲区 2.前面的scanf()在读取输入时会在缓冲区中留下一个字符’\n’(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误 3. getchar()是在输入缓冲区顺序读入一个字符(包括空…

    2022年10月19日
  • MyEclipse10.0 配置 Tomcat1.7

    MyEclipse10.0 配置 Tomcat1.7

    2021年8月29日
  • HTML5 新特性_CSS3新特性

    HTML5 新特性_CSS3新特性一.HTML5概念:1.什么是HTML5:(1)HTML5将成为HTML、XHTML以及HTMLDOM的新标准;(2)HTML5仍处于完善之中。然而,大部分现代浏览器已经具备了某些HTML5支持。2.HTML5的起步:(1)HTML5是W3C(WorldWideWebConsortium,万维网联盟)与WHATWG合作的结果(2)为HTML5建立的…

    2022年10月31日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号