解释什么是“static” ,Java中是否可以覆盖(override)一个private或者是static的方法?

一、“static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

 

static 表示静态的意思,可用于修饰成员变量和成员函数,被静态static修饰的成员函数只能访问静态成员,不可访问非静态成员,静态是随着类的加载而加载的,因此可以直接用类进行访问。

重写是子类方法和子类继承的父类中的方法一样(方法名、参数、参数类型、返回值类型),但是子类的访问权限要不低于父类中的访问权限。重写的前提是必须要继承,private 修饰不支持继承,因此被私有的方法不可以被重写(因为被private修饰的父类方法在子类中是不可见的  )。静态方法形式上可以被重写,即子类中可以重写父类中静态的方法。但是实际上重内存的角度上静态方法不可以被重写。static修饰的方法是静态绑定的,而方法覆盖是为了实现多态,是动态绑定,所以static修饰的方法不需要被覆盖。

 

二、是否可以在static环境中访问非static变量?

       因为静态的成员属于类,随着类的加载而加载到静态方法区内存,当类加载时,此时不一定有实例创建,没有实例,就不可以访问非静态的成员。

      不可以在Static环境中,不可以访问到非static。因为静态类的成员属于类,随着类的加载而加载到静态方法区内存,当类加载时,此时不一定有实例创建,没有实例,就不可以访问非静态的成员。类的加载先于实例的创建,因此静态环境中,不可以访问非静态。

 

 

你可能感兴趣的:(JAVA基础知识,java,类)