`
zjx2388
  • 浏览: 1330968 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

类、方法、成员变量和局部变量的可用修饰符

阅读更多

今天遇到一题目:

import java.util.Stack;

public class aClass {
	fun() {
		static int i = 0;
		i++;
	}

	public static void main(String args[]) {
		aClass obj = new aClass();
		obj.fun();
		obj.fun();
	}

}

 question is :

what will be the value of I ?

A. Compilation error

B. Run time Error

C. 1

D. 2

此题考察修饰符,函数定义等,故从网上搜罗了下相关资料,总结如下:

类、方法、成员变量和局部变量的可用修饰符

修饰符

成员访求

构造方法

成员变量

局部变量

abstract(抽象的)

static (静态的)

public(公共的)

protected(受保护的)

 

private(私有的)

synchronized(同步的)

native(本地的)

transient(暂时的)

volatie(易失的)

final(不要改变的)

             

 

 修饰符 

Public

可以从其他类中访问

Abstract

本类不能被实例化

Final

不能再声明子类

构造函数修饰符  

Public

可以从所有的类中访问

Protected

只能从自己的类和它的子类中访问

Private

只能在本类中访问

/成员变量修饰符  

Public

可以从所有的类中访问

Protected

只能从本类和它的子类中访问

Private

只能从本类中访问它

Static

对该类的所有实例只能有一个域值存在

transient

不是一个对象持久状态的一部份

Volatile

可以被异步的线程所修改

final

必须对它赋予初值并且不能修改它

局部变量 修饰符 

final

必须对它赋予初值并且不能修改它

方法修饰符 

Public

可以从所有的类中访问它

Protected

只能从本类及其子类中访问它

Private

只能从本类中访问它

abstract

没有方法体,属于一个抽象类

final

子类不能覆盖它

static

被绑定于类本身而不是类的实例

native

该方法由其他编程语言实现

asnchronized

在一个线程调用它之前必须先给它加

类的修饰符整合

一.类

类的修饰符:

Public:可以在其他任何类中使用,默认为统一包下的任意类。

Abstract:抽象类,不能被实例化,可以包含抽象方法,抽象方法没有被实现,无具体功能,只能衍生子类。

Final:不能被继承。

二.变量

变量修饰符:

一个类的成员变量的声明必须在类体中,而不能在方法中,方法中声明的是局部变量

1.       可访问修饰符:

2.       static类变量:一个类所拥有的变量,不是类的每个实例有的变量。类变量是指不管类创建了多少对象,系统仅在第一次调用类的时候为类变量分配内存,所有对象共享该类的类变量,因此可以通过类本身或者某个对象来访问类变量。

3.       final常量

4.       volatile:声明一个可能同时被并存运行的几个线程所控制和修改的变量。

实例变量:和类变量对应,即每个对象都拥有各自独立的实例变量。

三.方法:(和变量对象分为实例方法和类方法,并用有无static修饰区别)

类方法:使用static关键字说明的方法

1.第一次调用含类方法的类是,系统只为该类创建一个版本,这个版本被该类和该类的所有实例共享。

2.类方法只能操作类变量,不能访问实例变量。类方法可以在类中被调用,不必创建实例来调用,当然也可以通过对象来调用。

实例方法:实例方法可以对当前对象的实例变量操作,而且可以访问类变量。

方法可以重载,要求:方法名相同,但是参数必须有区别。(参数不同可以使类型不同,顺序不同,个数不同)

方法的返回类型:若无返回类型,则声明为void.

方法中的变量作用域:

1.       成员变量:整个类。

2.       局部变量:定义起到方法块结束为止。

3.       方法参数:整个方法或者构造方法。

4.       异常处理参数:参数传递给异常处理方法。

构造方法:和类同名的方法。为新建对象开辟内存空间后,用于初始化新建的对象。不能用对象显式的调用。

静态初始化器:格式:static{<赋值语句组>}

静态初始化器与构造方法的区别: 

静态初始化器

构造方法

对类的静态域初始化

对新建的对象初始化

类进入内存后,系统调用执行

执行new后自动执行

属特殊语句(仅执行一次)

属特殊方法

方法的修饰符:

抽象方法:abstract修饰,只有声明部分,方法体为空,具体在子类中完成。

类方法:静态方法,用static修饰,

1.       调用时,使用类名作为前缀,而不是类的某个实例对象名

2.       不能被单独对象拥有,属于整个类共享。

3.       不能处理成员变量。

最终方法:用final修饰,不能被子类重新定义的方法。

本地方法:用native修饰的方法,表示用其他语言书写的特殊方法,包括CC++FORTRAN,汇编语言等。

四.类成员的访问控制符

即类的方法和成员变量的访问控制符,一个类作为整体对象不可见,并不代表他的所有域和方法也对程序其他部分不可见,需要有他们的访问修饰符判断。

权限如下: 

访问修饰符

同一个类

同包

不同包,子类

不同包,非子类

private

 

 

 

protected

 

public

默认

 

 

 

 

 

PS:

1。开头题目的answer是A:原因自己好好想想,实在不知道,就放Eclipse/NetBeans看看

2。想想局部变量为何最多是final修饰

 

欢迎留言

 

 

分享到:
评论
5 楼 dreamkid0924 2010-10-27  
方法没有返回值类型吧 static能修饰局部变量吗 怎么提示错误啊
4 楼 zjx2388 2010-06-24  
qiren83 写道
static  修饰内部类不行吗?



内部类可以用static修饰
3 楼 qiren83 2010-06-23  
static  修饰内部类不行吗?
2 楼 renpeng301 2010-06-23  
  哎  ··
1 楼 maozj 2010-06-22  
     A

相关推荐

    全局变量、局部变量、静态变量即内存管理

    变量类型是编程语言中非常重要的一个概念,全局变量、局部变量、静态变量都是程序员经常使用的变量类型,但是这些变量类型之间的区别和联系却经常让人感到困惑。今天我们将详细地探讨这些变量类型之间的区别和联系,...

    37_全局变量和局部变量的区别1

    全局变量和局部变量是编程语言中两种不同的变量类型,它们在C++中有着明确的差异,主要体现在作用域、内存分配、生命周期以及对外...同时,使用`static`修饰符可以帮助控制变量的作用域和生命周期,减少潜在的错误。

    (C#)开发漫谈:关于变量的命名和属性

    在方法内声明的变量称为局部变量,只在该方法内部可用;在类内但不在任何方法内声明的变量称为字段,可在类的任何非私有方法中访问。生命周期是指变量从创建到销毁的时间段,局部变量在方法执行完毕后被释放,而字段...

    C语言的变量PPT课件.pptx

    例如,函数参数就是局部变量,仅在函数内部可用。 3.2.2 全局变量则在函数外部定义,作用域从定义位置到程序结束。示例3-3通过对比局部变量和全局变量的使用,强调了它们的不同。 3.2.3 变量的屏蔽效果:如果在局部...

    Java基础权限控制与final,内部类

    final变量不能被重新赋值,这适用于局部变量、成员变量和静态变量。final变量通常用于声明常量,以提高代码的可读性和安全性。 在Java中,引用类型的概念也很重要。引用类型变量存储的是对象的引用,而不是对象本身...

    java内部类总结(含概念和实例)

    2. 局部内部类:在方法中定义的内部类,局部内部类不能有访问说明符,因为它不是外围类的一部分,但是它可以访问当前代码块内的常量,和此外围类所有的成员。 3. 静态内部类:静态内部类是指在外部类的静态成员中...

    软件编程词汇表(一些编程词汇的解释)

    修饰符是用来控制类、方法或变量的可见性和行为的关键词。在Java中,常用的修饰符包括`public`、`protected`、`private`、`static`、`final`等。 #### 52. 本地方法 (Native Methods) 本地方法是指在Java中声明但在...

    Java基础总结

    以上概述了Java基础中的一些重要知识点,包括基本数据类型、引用数据类型、面向对象的概念、类的成员、方法重载、包和访问修饰符、数组、构造方法、`this`关键字、实例成员与静态成员、对象和类的初始化以及继承等。...

    Java内部类总结[参考].pdf

    + 与局部变量类似,局部内部类的生命周期是当前方法的生命周期 C. 静态内部类:作为外部类的一个静态成员存在。 * 静态内部类的特点: + 可以定义静态成员 + 可以访问外部类的静态成员 + 不需要外部类的对象来...

    java11问题.txt

    此外,`private`、`public`和`protected`这些访问控制修饰符不能用于局部变量,因为它们只适用于类成员(即字段和方法)。另外,`final`关键字可以用于局部变量,表示该变量一旦赋值后就不能再改变,但`final`不能...

    解析C++中的5个存储类的作用

    存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C++ 程序中可用的存储类: ...函数的局部变量和参数通常是自动存储类。存储类说明符auto显式声明

    java ppt

    - `this`关键字引用当前对象,常用于区分实例变量和局部变量,或者在构造方法中调用其他构造方法。 7. **final类、方法和变量**: - final类不能被继承,final方法不能被覆盖,final变量一旦赋值后不可更改。 8....

    Java经典学习笔记

    - `public`成员在任何地方都可访问,`private`成员仅限于类内部,`protected`成员在包内和子类中可用,无修饰符的成员在包内可见。 8. **静态成员**: - `static`关键字用于声明静态成员,它们属于类而非类的实例...

    C++关键词—static本质

    首先,我们要了解`static`修饰符在全局变量和局部变量中的作用。在全局作用域中,`static`用来声明一个静态全局变量。这类变量只在当前源文件中可见,不会在其他源文件中产生副本,解决了全局变量的可见性和内存管理...

    Codesys汇川AM600面向对象(动作方法属性).pdf

    在汇川AM600 中,`PRIVATE` 访问修饰符表示方法和属性仅在当前类内部可用,不应被继承;而`PUBLIC` 访问修饰符表示方法和属性在所有地方都可访问,当被继承时,其访问修饰符默认为空,意味着在继承类中同样可访问。 ...

    Java面向对象程序设计8.ppt

    例如,方法内的局部变量只在该方法内有效,而类级别的变量(也称为成员变量)在整个类中都可用。 构造器是类的一个特殊方法,它的主要任务是在创建新对象时进行初始化。构造器的名字与类名相同,且不返回任何值。...

    C#面向对象一些代码说明

    1. **类的声明和成员组织**:在C#中,类是面向对象编程的基础,用于封装数据和行为。类可以包含字段(属性)、方法、构造函数等成员。成员的组织通常遵循一定的规则,如访问修饰符(public, private, protected)的...

    java1-6章测试题目.docx

    成员变量在类加载时(静态)或对象创建时(实例)初始化,局部变量在声明和赋值后才可用。 常见的运行时异常包括`NullPointerException`、`ArrayIndexOutOfBoundsException`、`ArithmeticException`、`IOException`...

Global site tag (gtag.js) - Google Analytics