为什么this super不能用在static方法中??
来源:互联网 发布:无限发短信软件 编辑:程序博客网 时间:2024/04/28 11:05
class Fu
{
int a;}
class Zi extends Fu
{
int b;static void test()
{
this.b;super.a;
}
}
编译报错:Cannot use this in a static context Cannot use super in a static context
解释:
因为static方法和类的实例(对象)是两码事,它只在类装载的时候(即编译的时候或者javac命令的时候)初始化,被称作类级变量(属于类);而类的实例是在程序运行的时候(即Java命令的时候)初始化,被称作对象级变量(属于对象);
this表示这个类的当前实例,super表示父类的当前实例,static是属于类的,this是类的一个对象,当然调用了不了他,static太牛了,只有类名可以调用它,static叫静态方法,也叫类方法,就是在程序启动的时候,就会为这个方法分配一块内存空间,所以什么时候都可以调用这个方法。所以,静态方法里不能调用非静态方法,除非你先实例化那个类。如果在static修饰的方法中使用this关键字,而这个关键字就无法指向合适的对象;所以我们也说,静态成员不能直接访问非静态成员;jvm有类加载器,第一次加载类时执行类中的static域,jvm会专门划分一个内存区域给static程序块,可以成为静态区,属于这个类。this指针是指向类的对象,在实例化对象时jvm会在堆区分配内存给一个具体的对象,this指针指向这个对象。而类中的static域始终是在静态区分配内存,this指向堆区,所以不能调用。static是属于类的。this是对象指针
1 0
- 为什么this super不能用在static方法中??
- 静态方法为什么不能用this和super
- 为什么静态成员、静态方法中不能用this和super关键字
- 为什么静态成员、静态方法中不能用this和super关键字
- 为什么静态成员、静态方法中不能用this和super关键字
- 为什么静态成员、静态方法中不能用this和super关键字
- 为什么静态成员、静态方法中不能用this和super关键字
- 为什么静态成员、静态方法中不能用this和super关键字
- 为什么静态成员、静态方法中不能用this和super关键字
- java中static特殊性和final(static成员直接被访问,this不能用在static方法中,static不可访问非static)
- 关于this和super关键字为什么不能再static方法中或者静态代码块中
- 在static方法中为什么不能使用this引用
- static修饰的方法不能用this引用
- 为什么java的构造方法中this()或者super()要放在第一行
- java中static,this,super,this
- 静态方法中为什么不能使用super和this
- 为什么静态方法中不能使用this和super关键字
- static方法 内不能用this调用本类方法原因
- Red and Black hd 1312
- 把table中指定数值列的值(NUM),比方说5,转化为生产同记录的5行,方便一些打印软件使用
- LeetCode 147 Insertion Sort List
- MySQL表查询优化(三):有查询条件时的like
- Java三大特征-------多态
- 为什么this super不能用在static方法中??
- IntelliJ IDEA 从零开始创建一个项目
- River Hopscotch(二分)
- 解决从myeclipse导入eclipse导致不能识别为web项目
- Scala基础(5):Map、元组
- 什么是SCRUM?
- Codeforces Round #290 (Div. 2) A. Fox And Snake
- 版本更新
- Python随学随记(3)