Java的作用域

Posted Brioal

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的作用域相关的知识,希望对你有一定的参考价值。

Java的作用域

  作用域是指变量能生效的区域范围,声明在不同地方的变量具有不同的作用域,而决定作用域的就是花括号的位置,同时还决定了变量名的可见性与生命周期.

  Java语言中,变量的类型主要有成员变量,静态变量,和局部变量三种.类的成员变量 的作用范围与类的与类对象的作用范围相同,当类被实例化时,成员变量就会在内存中分配空间并初始化,直到这个实例化对象的生命周期结束为止.static修饰的成员变量为静态变量或者全局变量,与成员变量不同的是静态变量不依赖于特定的实例,而是被所有的实例所共享,只要一个类被加载JVM就会给类的静态变量分配内存空间,因此,就可以通过类名和变量名来访问静态变量.局部变量处于方法内部,其作用域与可见性为他所在的花括号内.

成员变量的四种作用域

作用域,可见性 当前类 同一package 子类 其他package
public 可见 可见 可见 可见
private 可见 不可见 不可见 不可见
protected 可见 可见 可见 不可见
default 可见 可见 不可见 不可见

作用域详解:

-public :表明该成员变量或者方法是对所有类或者对象都是可见的,所有类或者对象都可以直接访问
- private:表明该成员变量或者方法是私有的,只有当前类对其具有访问权限,除此之外其他类或者对象都没有访问权限.子类也没有访问权限.
- protected:表明成员变量或者方法对类自身,与同在一个包中的其他类可见,其他包下的类不可访问,除非是他的子类
- default:表明该成员变量或者方法只有自己和其位于同一个包的内可见,其他包内的类不能访问,即便是它的子类

需要注意的是,这些修饰符只能用来修饰成员变量,不能用来修饰局部变量

privateprotected不能用于修饰类

只有public , abstract , final能用于修饰类

实例题:

下列说法中正确的是();

A.实例方法可以直接调用超类的实例方法

B.实例方法可直接调用超类的类方法

C.实例方法可以直接调用其他类的实例方法

D.实例方法可用于直接调用本类的类方法

正确答案选D.子类在父类为priavatedefault类型下不能访问父类的方法,且只有静态方法可以被直接调用,故D正确.

完毕!

以上是关于Java的作用域的主要内容,如果未能解决你的问题,请参考以下文章

JS 作用域及作用域链

JS 作用域及作用域链

java代码在片段活动中不起作用

作用域是什么?

JavaScript 作用域 与 作用域链

JS---闭包