java静态方法没有this,super与this无法用在static方法中
更新记录
[1]2020.02.08--10:32
1.主要编辑了super
正文
我原本是在学习(super)关键字,后来突发奇想,能不能在父类中用(super)间接调用本类方法呢?
也就是说父类的方法(假设方法名为(printData)),通过子类的(super)去间接调用。
于是,就有了这样的一段代码:
class ChildClass extends Class2{
public static void print() {
super.printData();
}
}
public class Class2 {
protected void printData() {
System.out.println("调用父类printData方法");
}
public static void main(String[] args) {
ChildClass.print();
}
}
结果出现这样一段错误:Cannot use super in a static context
原因非常清楚。
我又写了一段代码:
class ChildClass extends Class2{
public void printData() {
super.printData();
}
}
public class Class2 {
protected void printData() {
System.out.println("调用父类printData方法");
}
public static void main(String[] args) {
new ChildClass().printData();
}
}
运行结果:调用父类printData方法
反过头来,为什么不可以在(static)方法中使用(super)呢
看看(static)方法有什么性质
它是静态方法
静态?
会随着类的定义而被分配和装载入内存中。
而且它是类方法,类方法是属于整个类的,用类名去调用。
有了上述了解,配合下面的代码就会理解
class ChildClass extends Class2{
public static void printData() {
//super.XXX();
}
}
public class Class2 {
public static void main(String[] args) {
ChildClass.printData();
}
}
看看编译时(super)去调用谁呢
静态方法先存在,然后对象再存在,所以编译静态方法时,对象还没出现
此时(super)指向的是空,当然不被编译器认可,(this)也是同理
java静态方法没有this,super与this无法用在static方法中相关推荐
- Java static方法中为什么只能调用静态方法?
import java.io.*; import java.util.*;public class Main{public static void main(String args[]) throws ...
- java执行完main就结束了吗_为什么main方法中执行完第一个方法完之后,后面的代码都不执行了?...
package chap05; public class StringFindTest { public static void testFind(String str, String substr) ...
- java 静态方法_80后程序员,教你学Java核心技术:用户自定义类+静态域静态方法
用户自定义类 在第3章中,已经开始编写了一些简单的类.但是,那些类都只有一个简单的main方法.现在让我们开始学习如何设计复杂应用程序所需要的各种"主力类"(workhorse c ...
- java 静态方法 调用非静态方法_java静态方法调用非静态方法
我们都知道,静态static方法中不能调用非静态non-static方法,准确地说是不能直接调用non-static方法.但是可以通过将一个对象的引用传入static方法中,再去调用该对象的non-s ...
- java main方法调用非静态方法_java中main函数怎么调用外部非static方法
展开全部 方法可以分为静态方法和实例方法 在main函数里调用非static方法(实例方法),那么32313133353236313431303231363533e78988e69d833133336 ...
- java static method_java 中static的几种用法
1.static修饰变量和方法 在类的变量和方法上加上了static修饰符以后,在JVM加载该类的时候就会被分配到方法区(new 出来的对象分配到堆),因此不需要在创建该类的实例以后再进行引用. 有几 ...
- static方法不能直接访问类内的非static变量和不能调用this,super语句分析
大家都知道在static方法中,不能访问类内非static成员变量和方法.可是原因是什么呢? 这首先要从static方法的特性说起.static方法,即类的静态成员经常被称为"成员变量&qu ...
- Java方法中的局部类和匿名类
1.局部类 在一个方法中定义的类称为方法中的内部类,或者叫做局部类(local class). 示例:Ex5_TestInnerInMethod.java方法中的内部类 public class ...
- java 静态方法中为什么不可以使用关键字this _super_Java static方法里为什么不能使用this关键字,和Super...
Static方法是类方法,先于任何的实例(对象)存在. 即Static方法在类加载时就已经存在了(JAVA虚拟机初始化时),但是对象是在创建时才在内存中生成. 而this指代的是当前的对象. stat ...
- Java关键字this、super使用总结
2019独角兽企业重金招聘Python工程师标准>>> 一.this关键字 Java关键字this只能用于成员方法体内,它是一个系统隐含的指针且被自动附加在非静态的成员方法参数列表中 ...
最新文章
- 孙正义:未来30年投资趋势【附PPT】
- 如何自制你自己的二极管
- linux 0x00,linux 学习笔记0x00
- 强化学习《基于价值 - Double Q-Learning》
- mysql一对多增删改查_SQLAlchemy 增删改查 一对多 多对多
- UCan下午茶武汉站,为你全面挖宝分布式存储
- 提高python 程序运行速度_3个Python函数帮程序员们避免编写循环,提高运行速度...
- Nginx源码分析 - 基础数据结构篇 - 单向链表结构 ngx_list.c(06)
- [RK3399][Android7.1] 如何将PWM背光线性处理
- Atitit各种SDM 软件SDP sdm的ddd tdd bdd设计
- AUTOSAR--UDS诊断报文
- Java2022面试题集锦
- 为什么我一打开计算机windows资源管理器就停止工作?,开机后提示“Windows资源管理器已停止工作”怎么解决?...
- js下拉列表二级联动
- 一加手机怎么root权限_一加5手机怎样Root,如何获取Root权限?
- 用 Go 手写一个 JSON 序列化器
- Centos7、Redhat7 重置root密码
- eclipse中的buidpath配置(工程不build)
- TWaver 3D作品Viewer查看器
- 【Unity3D 问题总结】Unity报错提示:Asset database transaction committed twice
热门文章
- 白鹭引擎拉伸高度_摩托车界厚道王!129cc单缸风冷引擎,座高740mm+数字盘,6400起...
- 输出毫秒_毫秒级网络监控(网络示波器)
- 输出100-1000之间的水仙花数 是三位数 水仙花数就是 每个位上的数字的三次方的和仍然为原数字 例如:153是一个“水仙花数“,因为153=1的三次方+5的三次方+3的三次方;
- 两台200smart以太网通讯_S7-200 SMART PLC之间如何实现以太网通信?(附接线图)
- BOM知识点全面总结(附实例、图解)
- 函数的基本知识点总结(附实例)
- [转]Vue基于vue-quill-editor富文本编辑器使用心得
- 通过dll来引用webservice的方法(.net)
- 3种时间复杂度实现不同类型的无序数组去重
- 《电子元器件的可靠性》——3.7节电子元器件失效率鉴定试验