java中有几种修饰符? java里有哪几种权限修饰符?各有什么作用?

作者&投稿:微例 (若有异议请与网页底部的电邮联系)

java中的修饰符分为类修饰符,字段修饰符,方法修饰符。根据功能的不同,主要分为以下五种。 

1、权限访问修饰符 

public,protected,default,private,这四种级别的修饰符都可以用来修饰类、方法和字段。

   

2、final修饰符 

final的意思是不可变,他可以修饰类、字段、方法。修饰类后类不能被扩展(extends),也就是不能被继承。修饰字段后字段的值不能被改变,因此如果有final修饰字段,应该对字段进行手动初始化。修饰方法后该方法不能被改变,也就是重写。 

3、abstract修饰符 

abstract是抽象的意思,用来修饰类和方法,修饰类后,该类为抽象类,不能被实例化,必需进行扩展。修饰方法后,该方法为抽象方法必须被子类重写(override)。 

4、static修饰符 

static用来修饰内部类,方法,字段。修饰内部类说明该内部类属于外部类而不属于外部类的某个实例。修饰字段说明该字段属于类而不属于类实例。修饰方法说明该方法属于类而不属于类实例

5、volatile修饰符  

易失 ( 共享 ) 域修饰符 volatile 是用来说明这个成员变量可能被几个线程所控制和修改。也就是说在程序运行过程中,这个成员变量有可能被其它的程序影响或改变它的取值。

扩展资料:

修饰符的特点:

static是一个修饰符,用于修饰成员(成员变量和成员函数)

静态成员随着类的加载而加载。静态成员优先于对象存在。静态成员被所有对象所共享静态成员多了一个中调用方式,可以被类名直接调用。

使用的注意事项:

静态方法只能访问静态成员, 非静态方法既可以访问静态又可以访问非静态。静态方法中不可以定义this,super关键字。因为this代表是对象。而静态存在时,有可能没有对象。所以静态方法运行时,this是没有任何对象代表的。 

简单说,先进内存的数据不可以访问后进内存的数据,可是后进内存数据可以访问先进内存的数据。主函数是静态的。



在Java中提供了很多的修饰符,修饰符可以用来修饰类,接口,方法,变量的信息;不同的修饰符,可以控制不同的访问权限;

以我们最开始见到的main方法来说:public static void main(String[] args){}

public 就是一个修饰符与public类似的修饰符还有default(默认),private(私有),protected(保护)

对于不同的修饰符,有不同的访问范围:

public(公有的)访问权限,可以修饰类,接口,变量,方法;public所修饰的内容,在当前类,同一个包,其他包都可以访问;

protected(受保护的):可以修饰变量,方法,不可修饰外部类;使用该修饰符修饰的类型可以在当前包,类,同一包类的子类中访问;其他包不可以访问;

default(默认):可以修饰类,接口,变量,方法使用该修饰符修饰的类型可以在当前包,类,同一包内的子类中访问;其他包不可以访问

private(私有的):可以修饰变量,方法,不能修饰外部类;使用该修饰符修饰的对象只可以在本类中使用,其他任何地方都不可以使用;

除了这些访问的修饰符,Java中还存在其他的修饰符:比如static, final, abstract等修饰符;

static(静态):可以修饰变量和方法,使用static修饰变量的时候,这个变量在内存中只有一份,也就是说无论这个类有多少个对象,都使用同一个内存空间,也就是说每个对象所访问该变量的值都是一样的,如果有一个对象将这个值进行了修改,那么其他对象访问这个值也就相应的进行了修改;使用static修饰方法,使用static修饰的方法为静态方法,静态方法中不可以调用没有static的非静态方法;

final(最终):使用final修饰的变量,初始化之后,不可以再次修改这个变量的值,也就说当给这个变量赋值之后,就不能再重新赋值;被final修饰的变量,当定义的时候,给他初始化了;final修饰的方法,可以防止这个方法被子类重写修改;

abstract(抽象): 可以修饰的类型有类和方法;当修饰类的时候,表示这个类是一个抽象的类;抽象类不可以实例化对象,只能被继承;当抽象类的子孙类不是抽象类的时候,才可以被实例化;当abstract修饰方法的时候,表示这个方法是抽象方法,一个抽象类里面可以没有抽象方法,但是当一个类里面有抽象方法的时候,那么这个类是抽象类;java学习方面的问题可以访问下这个网页网页链接,希望我的回答能帮到你。



一个标准类可以有四种访问修饰符:public,final,abstract和package(就是什么也不写) ,内部类在此基础上还可以有private 和 protected
(有的资料说只有private ,可我写了一个内部类,用protected修饰,没什么问题.)
1 public:所有的类都可以访问。
2 private:只有在同一个类中才可以访问。
3 protected:同一个类中、同一个包中、子类中都可以访问
4、包类型的,即默认类型 同一个类中、同一个包中可以访问到

一个标准类可以有四种访问修饰符:public,final,abstract和package(就是什么也不写) ,内部类在此基础上还可以有private 和 protected
(有的资料说只有private ,可我写了一个内部类,用protected修饰,没什么问题.)
1 public:所有的类都可以访问。
2 private:只有在同一个类中才可以访问。
3 protected:同一个类中、同一个包中、子类中都可以访问
4、包类型的,即默认类型 同一个类中、同一个包中可以访问到

总结一下
应是4种:
1 public:所有的类都可以访问。
2 private:只有在同一个类中才可以访问。
3 protected:同一个类中、同一个包中、子类中都可以访问4、包类型的,即默认类型 同一个类中、同一个包中可以访问到

java 修饰符有哪几个~

1、类的修饰符分为:可访问控制符和非访问控制符两种。

可访问控制符是:公共类修饰符 public

非访问控制符有:抽象类修饰符 abstract ;最终类修饰符 final

1 )公共类修饰符 public : Java 语言中类的可访问控制符只有一个: public 即公共的。每个 Java 程序的主类都必须是 public 类作为公共工具供其它类和程序使用的应定义为 public 类。

2 )抽象类修饰符 abstract :凡是用 abstract 修饰符修饰的类,被称为抽象类。所谓抽象类是指这种类没有具体对象的一种概念类。这样的类就是 Java 语言的 abstract 类。

3 ) 最终类修饰符 final :当一个类不可能有子类时可用修饰符 final 把它说明为最终类。被定义为 final 的类通常是一些有固定作用、用来完成某种标准功能的类。

4 )类缺省访问控制符:如果一个类没有访问控制符,说明它具有缺省的访问控制符特性。此时,这个类只能被同一个包中的类访问或引用。这一访问特性又称为包访问性。

2 .域的控制修饰符也分为:可访问控制符和非访问控制符两类。

可访问控制符有 4 种:公共访问控制符: public ;私有访问控制符: private ;保护访问控制符: protected ;私有保护访问控制符: private protected

非访问控制符有 4 种:静态域修饰符: static ;最终域修饰符: final ;易失 ( 共享 ) 域修饰符: volatile ;暂时性域修饰符: transient

1 )公共访问控制符 public :用 public 修饰的域称为公共域。如果公共域属于一个公共类,则可以被所有其它类所引用。由于 public 修饰符会降低运行的安全性和数据的封装性,所以一般应减少 public 域的使用。

2 )私有访问控制符 private : 用 private 修饰的成员变量 ( 域 ) 只能被该类自身所访问,而不能被任何其它类 ( 包括子类 ) 所引用。

3 )保护访问控制符 protected :用 protected 修饰的成员变量可以被三种类所引用:①该类自身;②与它在同一个包中的其它类;③在其它包中的该类的子类。使用修饰符 protected 的主要作用是允许其它包中它的子类来访问父类的特定属性。

4 )私有保护访问控制符 private protected :用修饰符 private protected 修饰的成员变量可以被该类本身或该类的子类两种类访问和引用。

5 )静态域修饰符 static :用 static 修饰的成员变量仅属于类的变量,而不属于任何一个具体的对象,静态成员变量的值是保存在类的内存区域的公共存储单元,而不是保存在某一个对象的内存区间。任何一个类的对象访问它时取到的都是相同的数据;任何一个类的对象修改它时 , 也都是对同一个内存单元进行操作。

6 )最终域修饰符 final :最终域修饰符 final 是用来定义符号常量的。一个类的域 ( 成员变量 ) 如果被修饰符 final 说明,则它的取值在程序的整个执行过程中都是不变的。

7 )易失 ( 共享 ) 域修饰符 volatile :易失 ( 共享 ) 域修饰符 volatile 是用来说明这个成员变量可能被几个线程所控制和修改。也就是说在程序运行过程中,这个成员变量有可能被其它的程序影响或改变它的取值。因此,在使用中要注意这种成员变量取值的变化。通常 volatile 用来修饰接受外部输入的域。

8 )暂时性域修饰符 transient :暂时性域修饰符 transient 用来定义一个暂时性变量。其特点是:用修饰符 transient 限定的暂时性变量,将指定 Java 虚拟机认定该暂时性变量不属于永久状态,以实现不同对象的存档功能。否则,类中所有变量都是对象的永久状态的一部分,存储对象时必须同时保存这些变量。

3 .方法的控制修饰符也分为:可访问控制符和非访问控制符两类。

可访问控制符有 4 种:公共访问控制符: public ;私有访问控制符: private ;保护访问控制符: protected ;私有保护访问控制符: private protected

非访问控制符有 5 种:抽象方法控制符: abstract ;静态方法控制符: static ;最终方法控制符: final ;本地方法控制符: native ;同步方法控制符: synchronized

1 )抽象方法控制符 abstract :用修饰符 abstract 修饰的方法称为抽象方法。抽象方法是一种仅有方法头,没有方法体和操作实现的一种方法。

2 )静态方法控制符 static :用修饰符 static 修饰的方法称为静态方法。静态方法是属于整个类的类方法;而不使用 static 修饰、限定的方法是属于某个具体类对象的方法。 由于 static 方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,即 static 方法只能处理 static 的域。

3 )最终方法控制符 final :用修饰符 final 修饰的方法称为最终方法。最终方法是功能和内部语句不能更改的方法,即最终方法不能重载。这样,就固定了这个方法所具有的功能和操作,防止当前类的子类对父类关键方法的错误定义,保证了程序的安全性和正确性。所有被 private 修饰符限定为私有的方法,以及所有包含在 final 类 ( 最终类 ) 中的方法,都被认为是最终方法。

4 )本地方法控制符 native :用修饰符 native 修饰的方法称为本地方法。为了提高程序的运行速度,需要用其它的高级语言书写程序的方法体,那么该方法可定义为本地方法用修饰符 native 来修饰;

5 )同步方法控制符 synchronized :该修饰符主要用于多线程共存的程序中的协调和同步。

本文出自http://hi.baidu.com/lifa868/blog/item/d91674ecb346c64779f0557d.html

总结一下
应是4种:
1 public:所有的类都可以访问。
2 private:只有在同一个类中才可以访问。
3 protected:同一个类中、同一个包中、子类中都可以访问
4、包类型的,即默认类型 同一个类中、同一个包中可以访问到

类定义的修饰符有那几个什么含义
答:2、public:不限制对类的访问。3、protected:只可以被本类和其继承子类访问。4、internal:只可以被本集合内所有的类存取。集合是C#语言中类被组合后的逻辑单位和物理单位,其编译后的文件扩展名往往是“DLL”或“EXE”。5、protected internal:唯一的一种组合限制修饰符,它只可以被本组合体内所有的...

C#中四种访问修饰符是哪些?
答:c#的四种访问修饰符是:public、protected、private和internal。其实,还有一个组合访问修饰符,那就是:protected internal。下面是一个例子:using System;class Program { static void Main(string[] args){ f1();f2();f3();f4();f5();Console.ReadKey();} public static void f1(){ Console....

c#中的修饰符有哪些?
答:这种调度在特定的环境中非常影响性能(可有几百倍之差)。如VB里只支持STAThread模式。FreeThread模式的组件会在里面表现成和跨进程一样慢!线程模式是微软的COM基础中的极其重要的概念。一定要吃透![MTAThread]:是MultiThreaded Apartment多线程套间的意思,同上也是一种线程模型。存取修饰符:public:存取不...

JAVA中类成员的限定词有哪几种,其中,什么的限定范围最大
答:你说的是访问修饰符,这是我当年参加企业培训的总结资料,很经典,希望对你有所帮组

java 方法的重写,重载中对于两个方法修饰符,返回值有什么要求吗?
答:java覆盖,方法的修饰符可以不同,但子类方法的修饰符必须比父类方法的限...答:子类可以重写父类的方法,但有几个需要注意的, 子类重写修饰不得缩小, 比如父亲类中是public 子类重载方法不得变为 private 不得扩大错误抛出类型的范围,比如父类方法中只抛出 NumberF od方法根本不是重写的A 的method方法...

c语言中的修饰符有什么用?
答:修饰符 格式说明、意义 M %md 以宽度m输出整型数,不足m时,左补空格 0m %0md 以宽度m输出整型数,不足m时,左补零 m,n %m.nf 以宽度m输出实型小数,小数位为n位 例如:设i = 123,a = 12.34567,则:printf("%4d +++ %5.2f",i,a);输出: 123 +++ 12.35 printf("%2d +...

String,StringBuffer和StringBuilder的区别
答:1.可变与不可变 String类中使用字符数组保存字符串,如下就是,因为有“final”修饰符,所以可以知道string对象是不可变的。private final char value[];StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,如下就是,可知这两种对象都是可变的。ch...

ava的方法重载和方法重写有什么区别?举个例子?
答:}//编译器错误信息:Son 中的 speak() 无法覆盖 Father 中的 speak();被覆盖的方法为 final 重写方法的规则:1.参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载;2.返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载;3.访问修饰符的限制一定要大于被...

ava中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop...
答:有两种实现方法,分别使用new Thread()和new Thread(runnable)形式,第一种直接调用thread的run方法,所以,我们往往使用Thread子类,即new SubThread()。第二种调用runnable的run方法。 有两种实现方法,分别是继承Thread类与实现Runnable接口用synchronized关键字修饰同步方法反对使用stop(),是因为它不安全。它会解除由线程...

java 中的语法到底指的什么?
答:而C++支持friend关键字,允许外部方法访问类的私有成员,因此不是一种纯面向对象的编程语言 Java中类或interface可以用public修饰,也可以不修饰;而C++类不能修饰 三种访问权限的语义相同,语法略有差别 C++中还有继承权限修饰符,Java则没有 class A: protected B, public C (C++)class A extends B ...