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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 三阶贝塞尔曲线_三阶贝塞尔曲线公式

    三阶贝塞尔曲线_三阶贝塞尔曲线公式目的:使用L-Edit绘制DC耦合器版图其中的弯曲部分就是基于贝塞尔曲线画出来的。长这样↓使用语言:C语言写了两个版本。一个是基于L-edit平台的版本,一个是基于VS平台版本(我的是2017版)。这里说下VS的版本,不过VS里我就没有费心画出来了,只是列出了坐标来验证我L-Edit里面版图的正确性。贝塞尔曲线是个啥可参考这篇:点击打开链接简言之我们要画的三阶贝塞尔曲线就是通过四个点来拟合一条曲线…

  • 讲座:计算机专业及其学习

    讲座:计算机专业及其学习

  • Mysql 5.7解压版下载安装及配置教程

    Mysql 5.7解压版下载安装及配置教程最近在学习中用到了MySQL数据库,在安装过程中遇到了不少问题,在翻了大半天百度后,问题基本都解决了,所以写一篇MySQL5.7解压版的图文详细安装教程。至于为什么我会选择解压版而不是安装版,一是因为安装版没有64位版本;二是因为安装版的软件在重装系统或者挪动软件的位置后,就会出现无法使用的情况,而大部分绿色版或者解压版的软件就不存在这样的问题,只需要重新配置一下即可使用。如果你是刚接触MySQL的同学,安装版也是你不错的选择,安装时无脑点下一步基本就可以装好,默认参数程序都会给你配好,既简单又方.

  • java学习路线,一个初中生学java要多久,java难学吗

    java学习路线,一个初中生学java要多久,java难学吗一门永不过时的编程语言——Java软件开发java难学吗java不难,你可以做如下学习一、到相应的培训机构付费学习别在这说培训机构没用什么的,不过一定要找正规的培训机构,不然容易被坑。培训机构里面的课程都是现在工作中需要用到的,时间短,所以可能学生消化得没那么快,基础可能也没那么快巩固,所以需要自己更加的努力。在培训机构里学习要注意的是:勤加练习、主动自学、有问题提,不懂的尽管问老师,不然毕业后再有问题就没有这么好的机会能够直接得到有效的沟通了。二、自学由于是自学,所以从开始到入门会很枯燥,

  • Vue.extend详解,自定义toast弹窗

    Vue.extend详解,自定义toast弹窗Vue.extend方法,返回的是一个扩展实例构造器可以理解为组件类的一个构造函数,其属性都为组件内的对应的属性//定义一个组件的构造函数constdivComponent=Vue.extend({ template:`<divv-on:click=”click”>{{text}}</div>`, data(){ return{ text:’helloword’ } }, methods:{ click(){ consol

  • Pytest(17)运行未提交的git(pytest-picked)

    Pytest(17)运行未提交的git(pytest-picked)前言我们每天写完自动化用例后都会提交到git仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交git仓库的用例。pytest-picked插件可以

发表回复

您的电子邮箱地址不会被公开。

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