为什么静态成员、静态方法中不能用this和super关键字

1.     在静态方法中是不能使用this预定义对象引用的,即使其后边所操作的也是静态成员也不行.
因为this代表的是调用这个函数的对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载后,对象还不一定存在

2.     在问题之前先讲super的用法:
1.super的用法跟this类似,this代表对本类对象的引用,指向本类已经创建的对象;而super代表对父类对象的引用,指向父类对象;
2.静态优先于对象存在;
3.由上面的1.和2.知:
因为静态优先于对象存在,所以方法被静态修饰之后方法先存在,而方法里面要用到super指向的父类对象,但是所需的父类引用对象晚于该方法出现,也就是super所指向的对象没有,当然就会出错。
综上,静态方法中不可以出现super关键字。

3. 首先你要明白对象和类的区别。
this和super是属于对象范畴的东西,而静态方法是属于类范畴的东西
所有的成员方法,都有一个默认的的参数this(即使是无参的方法),只要是成员方法,编译器就会给你加上this这个参数如:
Class A中
void method1(){}实际上是这样的--------> void method1(A this)
void method2(int x){}实际上是这样的--------> void method2(A this, intx)
而静态方法与对象无关,根本不能把对象的引用传到方法中,所以不能用this

4.     在一个类中定义一个方法为static,则为静态方法,那就是说,无需本类的对象即可调用此方法,调用一个静态方法就是“类名.方法名”

既然"无需本类的对象即可调用静态方法",而this和super关键字都是用于本类对象的-----调用静态方法无需本类的对象这句话很清楚表明:静态方法中不能用this和super关键字

5.     静态方法是存放在内存中的数据段里,this和super调用的是堆空间里的应用对象不能调用数据段区域里的数据,因此静态方法中不能用this和super关键字

6.     静态方法和静态类不属于单个对象,而是类的所有对象共享使用
而this代表当前对象

7.   东西只属于类,不属于任何对象,所以不能用THIS和SUPER。

转载于:https://www.cnblogs.com/CrisZjie180228/p/8758925.html

为什么静态成员、静态方法中不能用this和super关键字相关推荐

  1. Java中super关键字及super()的使用

    Java中super关键字及super()的使用: 1.super的使用: (1)super是一个关键字. (2)super和this很类似,我们对比着学习. 2.先复习一下this关键字的使用. ( ...

  2. JavaScript中解析super关键字

    虽互不曾谋面,但希望能和您成为笔尖下的朋友 以读书,技术,生活为主,偶尔撒点鸡汤 不作,不敷衍,意在真诚吐露,用心分享 点击左上方,可关注本刊 标星公众号(ID:itclanCoder) 如果不知道如 ...

  3. java静态成员方法_关于java:在静态方法中访问类的静态成员

    我在java中有这个代码我用netbeans写它 class sample { public static int x; public int y; sample() { x=0; } } publi ...

  4. java 静态调用非静态方法_java中静态方法中调用非静态方法的详解

    首先static的成员是在类加载的时候初始化的,JVM的CLASSLOADER的加载,首次主动使用加载,而非static的成员是在建立对象的时候,即new 操做的时候才初始化的:函数 前后顺序是先加载 ...

  5. java中静态方法中调用非静态方法的详解

    静态static方法中不能调用非静态(non-static)方法,准确地说是不能直接调用non-static方法.但是可以通过将一个对象的引用传入static方法中,再去调用该对象的non-stati ...

  6. 静态方法中不能new内部类的实例对象的总结

    class Test{public void main(String[] args){A testA=new A(); //这里会出现问题new Thread(new Runnable(){publi ...

  7. java 注解 静态变量_Spring中静态方法中使用@Resource注解的变量

    开发中,有些时候可能会工具类的静态方法,而这个静态方法中又使用到了@Resource注解后的变量.如果要直接使用 Utils.staticMethod(),项目会报异常:如果不直接使用,还要先 new ...

  8. static(静态方法中)如何调用非静态方法?

    在静态方法的内部不能直接调用非静态方法,因为方法属于类而不是对象,我们可以通过自己手动new对象来在静态方法中调用 简单case: 如下代码设置Build类一个静态方法一个成员方法 public cl ...

  9. java静态方法中获取spring容器中的bean

    获取上下文工具类: package com.hikvision.pvia.kafka.utils;import org.springframework.beans.BeansException; im ...

最新文章

  1. opencv图像特征检测之斑点检测
  2. 【转】如何上传本地音乐作为百度空间背景音乐
  3. 初探 开源视频会议 openmeeting
  4. 阿里云启动API创新大赛 设视频技术为场景赛题
  5. vim 配置_一步步配置VIM(3)-与latex结合
  6. struts2学习 - action - 1
  7. 黄光裕出来后,首先会做这三件事(转)
  8. 洛谷——P1163 银行贷款
  9. 三星笔记本BIOS文件提取 三星笔记本BIOS降级
  10. 关于程序员的调查报告
  11. 做跨境不知道选什么类目,看看这些常青树类目
  12. 又有朋友被骗入传销了!
  13. 虚拟搭建局域网模拟器_如何建立虚拟局域网
  14. Halcon批量读取图片 读取指定文件夹下图片
  15. 桌面多了一个计算机,Win10虚拟桌面:一台电脑多个桌面
  16. GateWay简单的使用、集群搭建和数据库动态配置
  17. win10离线安装 .NetFramework3.5
  18. Javascript中四舍六入五成双
  19. linux极点五笔无法输入词组_ibus设置
  20. 一种在C语言中用 System V ucontext 实现的协程切换

热门文章

  1. Android RecyclerView详解
  2. Spring MVC(三)--控制器接受普通请求参数
  3. RHEL 6.5 + Oracle 11g安装
  4. 项目拆分子工程(简单版)
  5. 【BZOJ4417】: [Shoi2013]超级跳马
  6. asp.net站点时间格式与系统时间格式不一致。手动修改
  7. 阿里云mysql安装
  8. java程序员高薪持续的原因有哪些
  9. 现在java就业前景怎么样?现在入行晚了吗
  10. Arts 第十八周(7/15 ~ 7/21)