当前位置:首页 » 密码管理 » 类成员的访问修饰符

类成员的访问修饰符

发布时间: 2023-01-27 18:45:03

java访问修饰符是什么

Java中的访问修饰符

Java面向对象的基本思想之一是封装细节并且公开接口。Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节。访问控制分为四种级别:

(1)public: 用public修饰的类、类属变量及方法,包内及包外的任何类(包括子类和普通类)均可以访问;

(2)protected: 用protected修饰的类、类属变量及方法,包内的任何类及包外那些继承了该类的子类才能访问(此处稍后解释),protected重点突出继承;

(3)default: 如果一个类、类属变量及方法没有用任何修饰符(即没有用public、protected及private中任何一种修饰),则其访问权限为default(默认访问权限)。默

认访问权限的类、类属变量及方法,包内的任何类(包括继承了此类的子类)都可以访问它,而对于包外的任何类都不能访问它(包括包外继承了此类的子类)。default重点突出包;

(4)private: 用private修饰的类、类属变量及方法,只有本类可以访问,而包内包外的任何类均不能访问它。

网上一些资料及一些书上用表格对java访问修饰符做了清楚的总结,如下表所示:

重要总结:通过上面的分析,我们可以看到:

1.public、private和protected对我们来说没有任何异议。

2. 顶层类只能用public访问修饰符和default(默认)访问修饰符修饰,其中用默认修饰符修饰的类(及没有任何修饰符的类,如class B{})不能被其他包中的类继承,这也说明了default(默认)访问修饰符突出的是包权限

3. protected:本人做了一次实验,发现在不同包的子类中,new一个父类对象,并用该父类对象去访问父类中的用protected修饰的类属变量和方法时不能访问,而new一个子类对象时,子类对象可以访问(说明protected修饰的类可以被其他包中的类继承)。也可以在子类重写父类的方法中使用super关键字调用。这岂不是和上面表格中的总结(红色对勾)冲突了?本人也是百思不得其解。最后在网上找到了一个相对比较认可的解释,如下:

protected修饰符的修饰的成员变量和方法也称为受保护的成员变量和方法, 受保护的成员变量和方法可以在本类或同一个包中的其它类(包括子类)中通过类的实例进行访问,也可以被同一个包中的类或不同包中的类继承,但是不能在不同包中的其它类(包括子类)中通过类的实例进行访问。

4. 如果一个类使用public修饰,那该类的类名必须与他所在的源文件名相同。一个.java源文件中有且只有一个public类,顶层类只能用public和默认修饰符(即无修饰符)修饰;

5.final修饰的类不能被继承,没有子类。

6.abstract修饰的类不能被实例化,必须被子类继承。类只要有一个抽象方法就必定是抽象类,但抽象类不一定要有抽象方法。

最终总结,就一句话:protected修饰符所修饰的类(这句话中指父类)属成员变量和方法,只可以被子类访问,而不管子类是不是和父类位于同一个包中。default修饰符所修饰的类属成员变量和方法,只可被同一个包中的其他类访问,而不管其他类是不是该类的子类。protected属于子类限制修饰符,而default属于包限制修饰符。

⑵ java中类成员的访问修饰符有哪些

一:访问修饰符:
1.省略访问修饰符
具有默认的访问特性,即具有包访问特性,只能被同一个包中的类使用。
2.public访问修饰符
用于说明类和类的成员的访问权限。这种类叫公有类。在一个文件中只能有一个public类型的类。
例如:Rect和UseImport两个类,分别在两个不同的包中。顺便回顾一下不同类要用import导入。(哎,一直就没记住)
//Rect.java
pacakage
my;
public
class
Rect
{
private
int
a,b;
public
void
init(int
len,int
width)
{
a=len;
b=width;
}
public
int
area()
{
return
a*b;
}
}
//UseImport.java
import.my.*;//导入my
包的所有类
public
class
UseImport
{
public
static
void
main(string[]
args)
{
Rect
x=new
Rect();
x.init(2,3);
System.out.println("矩形面积为:"+x.area());
}
}
3.private
用private修饰的类成员成为私有成员,只能在声明该成员的类中使用,不能在类外使用。一般通过本类中公有方法进行访问。
4.protected
protected修饰的类成员为保护成员,可以被三种类使用,分别是该类本身,该类的所有子类,该类同包的其他类,该类的子类。
5.private
protected
私有保护成员。可被两种类使用。分别是:该类本身和该类的所有子类。
二:特征修饰符
1.abstract:抽象
修饰类为抽象类,修饰方法为抽象方法。只要类中有抽象方法,就必须定义为抽象类。抽象方法只能声明,不能实现。但是可以在其子类中对抽象方法进行实现。抽象类中也可以包含非抽象方法。
2.final:最终
修饰的类为终止类,不能有子类。修饰变量为终止变量,只可赋值一次。修饰方法为终止方法,不能在子类中更改。如Socket、ServerSocket等都是final类,防止黑客派生子类进行破坏。同时,final与abstract是相互矛盾的。
3.static:静态
静态成员无需通过对象调用,可以直接通过类名直接调用。
public
class
RectArea//输出6

12
{
public
static
void
main(String[]
args)
{
System.out.println(area(2,3));
System.out.println(area(3,4));
}
static
void
area(int
a,int
b)
{
return
a*b;
}
}
4.native
用native修饰的为本地方法。它修饰的方法在程序外部使用其他编程语言编写。(这个步骤比较多,所以就木有继续研究了)
5.synchronized
修饰的方法为同步方法。

⑶ c#中的类中的5种不同访问修饰符的含义

这个要看类的位置,



如果类,结构,代理,枚举是外置的,那修饰符只有:public 和 internal,默认是internal。


至于private和protected是用来修饰类的成员。

如果是内置的,就是作为另一个类型的成员,也称内部类型(inner type),这样的话,修饰符可以是全部可用修饰符,默认是private。



举例:


class a {} 类a是internal

c#中类的默认访问修饰符,默认是internal :C#用多种修饰符来表达类的不同性质。

根据其保护级 C#的类有五种不同的限制修饰符:public 可以被任意存取;

protected 只可以被本类和其继承子类存取;

internal只可以被本组合体(Assembly)内所有的类存取,组合体是C# 语言中类被组合后的逻辑单位和物理单位,其编译后的文件扩展名往往是“.DLL”或“.EXE”protected internal唯一的一种组合限制修饰符,它只可以被本组合体内所有的类和这些类的继承子类所存取。

private 只可以被本类所存取。如果不是嵌套的类,命名空间或编译单元内的类只有public和internal两种修饰。

new 修饰符只能用于嵌套的类,表示对继承父类同名类型的隐藏。

abstract 用来修饰抽象类,表示该类只能作为父类被用于继承,而不能进行对象实例化。

抽象类可以包含抽象的成员,但这并非必须。abstract 不能和new 同时用

⑷ 请问:java类成员访问修饰符的限制范围

public:Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。

private:Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。

protect:介于public和private之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。

default:即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。

⑸ 请问:java类成员访问修饰符的限制范围

public
访问范围最大,也就是任何其他类都可以调用这个类的方法或属性。
private
访问范围最小,也就是只能在这个类的内部使用,外部调用不了
protected
访问范围算是中间,只有本类和子类才能访问。

⑹ 与C++等语言相比,C#中增加的一个类成员访问修饰符是什么谢啦

1. C#中类的修饰符:
public—— 表示不限制对该类的访问,最开放,所有的本程序集以及其他的程序集里面的对象都能够访问
protected ——表示只能从所在类和所在类派生的子类进行访问
private ——只有其所在类才能访问
internal ——本程序集内的成员可以访问
abstract—— 抽象类不允许建立类的实例。修饰方法的时候表示该方法需要由子类来实现,如果子类没有实现该方法那么子类同样是抽象类;且含有抽象方法的类一定是抽象类
sealed——修饰类时表示该类不能够被继承,修饰方法时表示该方法不能被覆写
partial——部分类,可以将一个类分成几部分写在不同文件中,最终编译时将合并成一个文件,且各个部 分不能分散在不同程序集中
static——修饰类时表示该类时静态类,不能够实例化该类的对象,既然不能实例化该类,那么这个类也 就不能够含有对象成员,即该类所有成员为静态

2. C#成员修饰符
类的成员包括构造方法、属性、方法等。
Public:最开放,所有的本程序集以及其他的程序集里面的对象都能够访问。
Protected: 比较开放,自身成员以及子类成员可访问。
Private:只有自身成员才能够访问。
Internal:本程序集内的成员可以访问。
Abstract:修饰方法的时候表示该方法需要由子类来实现,如果子类没有实现该方法那么子类同样是抽象类;且含有抽象方法的类一定是抽象类
Sealed:修饰类时表示该类不能够被继承,修饰方法时表示该方法不能被覆写。
Static:修饰类成员时,该成员为类成员,只能通过【类.成员名】的方式访问。当static修饰构造函数时,构造函数不能含有任何参数,不能含有修饰符,构造函数不能对对象成员进 行初始化操作。但是能够对静态成员进行初始化或者调用。不能保证他在什么时候执行,却能保证在第一次使用类型前执行。在静态构造函数中初始化的静态成员为最终初始化结果。
Virtual:修饰方法成员,表示虚方法。父类可以含有该类的实现,子类可以覆写该函数。
Override:表示该方法为覆写了父类的方法。
Readonly:修饰字段,表示该字段为只读字段。readonly修饰引用类型时由于操作不当可能修改该只读对象状态。
Const:修饰字段,表示该字段为只读字段。并且在编译时必须能够明确知道该字段的值,其值是硬编码到程序中去的,修改了该类型成员后需要重新编译才能使修改生效。
abstract:用来修饰抽象类,表示该类只能作为父类被用于继承,而不能进行对象实例化。抽象类可以包含抽象的成 员,但这并非必须。abstract不能和new同时用。
internal: 当一个类或方法没有被任何修饰符修饰时,默认为internal。

⑺ Java中成员属性默认访问修饰符是什么

Java中成员属性默认修饰符为default.
举个栗子 : 假如有成员变量name,类型为String,则声明为String name ;
此时该变量的默认权限修饰符就是default.
下附Java成员权限修饰符权限 :
private : 只能在当前类中访问
default : 只能在当前类以及同一个包下访问
protected : 除了当前类以及同一个包下访问外,还为不在同一个包下的子类提供了一种访问父类成员的方式
public : 同一个工程下,所有包均可访问.
望采纳!如赞同请点赞!您的肯定就是我的动力!

热点内容
对象存储使用场景 发布:2025-08-25 04:55:09 浏览:489
装wf锁了一般原始密码是多少 发布:2025-08-25 04:40:14 浏览:356
sql转mysql 发布:2025-08-25 04:40:12 浏览:881
交互性编程 发布:2025-08-25 04:33:01 浏览:959
编译器一般多少行代码 发布:2025-08-25 04:32:28 浏览:768
asp班级源码 发布:2025-08-25 04:28:06 浏览:503
python连接redis集群 发布:2025-08-25 03:52:28 浏览:860
易语言邮箱在云服务器上 发布:2025-08-25 03:18:56 浏览:534
一刀辅助脚本 发布:2025-08-25 03:13:53 浏览:30
彩虹源码对接 发布:2025-08-25 02:12:19 浏览:904