首页技术文章正文

static方法内部是否能调用非static方法【Java面试】

更新时间:2020-09-29 来源:黑马程序员 浏览量:

(1)问题分析:

考官主要相对static方法的考察,涉及到static关键词考核,如抽象的(abstract)方法是否可同时是静态的(static);static 可否用来修饰局部变量; 内部类与静态内部类的区别;java中是否可以覆盖(override) 一个private或者是static的方法。

(2)核心答案讲解:

不可以。static方法是静态方法,是属于类的方法,非static方法是属于对象的方法。因为非static方法是要与对象关联在一起的,必须在创建出一个对象后,才可以通过这个对象调用非static方法;而static方法可以直接通过类名来调用,不需要创建对象。也就是说,在一个static方法被调用时,还可能没有创建任何实例对象,此时如果从static内部发出对非static方法的调用,非static方法是无法关联到对象的。

(3)问题扩展:

static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块。

static修饰的变量习惯称为静态变量,static修饰的方法称为静态方法,static修饰的代码块叫做静态代码块。

static的意义在于方便在没有创建对象的情况下来进行调用(方法/变量)。

“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。

(4)结合项目中使用:

1)在项目中,很多工具类会使用static定义方法 ,达到不用new对象直接类名.方法名直接调用,使用工具更方便,减少重复代码的作用。例如:项目中的UUIDUtils

2)常见的单例模式

单例模式方法定义为静态方法:达到不能用该类在其他地方创建对象,而是通过该类自身提供的方法访问类中的那个自定义对象的目的。

猜你喜

Java异常处理机制的原理和应用 

java访问级别介绍: private,protected,public和default的区别 

Java图形界面编程教程 

单例模式介绍:懒汉和饿汉代码

Java高级软件工程师课程 



分享到:
在线咨询 我要报名
和我们在线交谈!