目录
(3)Java中是否能覆盖private方法或static方法?
(1)static关键字是什么意思
表明一个成员变量或者成员方法可以在 所属类没有实例对象的情况下被访问
(2)static的作用
第一:为某特定的数据类型或对象分配单一的存储空间,而与创建对象的个数无关。
第二:实现某个方法或属性与类而不是对象关联在一起
Java类提供了两种类型的变量:用static关键字修饰的静态变量和不用static关键字修饰的实例变量。静态变量属于类,在内存中只有一个复制,只要静态变量所在的类被加载,这个静态变量就会被分配空间,因此就可以被使用了。对静态变量的引用有两种方式,分别是“类.静态变量"和”对象.静态变量"
实例变量属于对象,只有对象被创建后,实例变量才会被分配内存空间,才能被使用,它在内存中存在多个复制,只有用“对象.实例变量”的方式来引用。
(3)Java中是否能覆盖private方法或static方法?
都不能。
①static方法是编译时静态绑定的,而方法覆盖是基于运行时动态绑定的。
②private修饰的方法只能在当前类使用,其他类继承了该类,连访问的权限都没有,更不别说方法覆盖了。
注:编译时静态绑定,大概就是说,在编译时,就会把该方法绑定到类上,也就是说,在编译时就能确定,这个方法属于哪个类。
而运行时绑定则是,在运行时才会把方法绑定到类上。
(4)能否在static环境中访问非static变量
不能
static方法中不能使用this和super关键字,不能调用非static方法,只能访问所属类的静态成员和静态方法,因为当static方法被调用时,这个类的对象可能还没被创建,即使已经被创建了,也无法确定调用哪个对象的方法。同理,static方法也不能访问非static类型的变量。