「什么是java修饰符」java修饰符号

博主:adminadmin 2022-11-22 19:25:09 73

本篇文章给大家谈谈什么是java修饰符,以及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方法修饰符是什么.有多少.全写了下来

1.static修饰符: a.有时候程序员可能需要定义一个类成员,对它的使用不依赖于该类的任何对象,要创建这样的成员,成员的变量声明前必须加上关键字static。成员声明为static后,在创建该类的任何对象之前就可以访问它。 b.关键字static可应用于变量、方法,甚至不属于方法的一段代码块。生命静态类的对象时,不会生成静态变量的副本。类的所有实例都共享一些静态变量。 c.可以通过类名称来调用静态变量,也可以通过对类实例的引用来调用静态变量。但建议通过类名称来调用静态变量。 d.方法声明为静态时具有某些限制,具体如:它们只能调用其他静态方法。 它们必须只访问静态数据。 不能使用关键字this或super。 2.final修饰符: a.final修饰符可应用于类、方法、和变量。final变量的内容不能更改。因此,声明final变量时,必须将其初始化。 b.声明为final的变量不会在每个实例中都占用内存,也就是说,可以认为final变量就是常量。 c.通常的做法是为final变量选择大写的标识符。 d.当关键字final应用于方法时,它意味着方法不能被重写。如果对象已声明为final,对该对象的引用则不能更改,但它的值可以更改。 3.abstract修饰符: a.父类中的某些方法不包含任何逻辑,并且需要由子类重写。在这种情况下,应该使用关键字abstract来声明父类中的方法。 b.子类提供这种abstract这种方法的实现细节,而父类仅提供此方法的名称和声明,没有方法的主体。 c.任何一个或多个抽象方法的类也应该声明为抽象。 d.要声明一个抽象类,在class关键字前应该加上abstract。 e.抽象类不能被实例化。构造方法和static类方法不能声明为abstract。Abstract类的任何子类必须实现在父类中声明的所有abstract方法,否则子类必须声明为抽象类。 f.abstract类不能有对象,但它们可以用来创建对象的引用,因为Java运行时多态性是通过父类引用实现的。因此,对象可用来创建对抽象类的引用,抽象类可以指向子类的对象。 g.如果方法定义为抽象,那么此方法所在的类也必须为抽象。

java中的修饰符

static 表示静态,它可以修饰属性,方法和代码块。

1,static修饰属性(类变量),那么这个属性就可以用 类名.属性名 来访问,也就是使这个属性成为本类的类变量,为本类对象所共有。这个属性就是全类公有。(共有的类变量与对象无关,只和类有关)。

类加载的过程,类本身也是保存在文件中(字节码文件保存着类的信息)的,java会通过I/O流把类的文件(字节码文件)读入JVM(java虚拟机),这个过程成为类的加载。JVM(java虚拟机)会通过类路径(CLASSPATH)来找字节码文件。

类变量,会在加载时自动初始化,初始化规则和实例变量相同。

注意:类中的实例变量是在创建对象时被初始化的,被static修饰的属性,也就是类变量,是在类加载时被创建并进行初始化,类加载的过程是进行一次。也就是类变量只会被创建一次。

2,static修饰方法(静态方法),会使这个方法成为整个类所公有的方法,可以用类名.方法名 访问。

注意:static修饰的方法,不直接能访问(可以通过组合方式访问)本类中的非静态(static)成员(包括方法和属性),本类的非静态(static)方法可以访问本类的静态成员(包括方法和属性),可以调用静态方法。静态方法要慎重使用。在静态方法中不能出现this关键字。

注意:父类中是静态方法,子类中不能覆盖为非静态方法,在符合覆盖规则的前提下,在父子类中,父类中的静态方法可以被子类中的静态方法覆盖,但是没有多态。(在使用对象调用静态方法是其实是调用编译时类型的静态方法)

注意:父子类中,静态方法只能被静态方法覆盖,父子类中,非静态方法只能被非静态方法覆盖。

java中的main方法必须写成static的因为,在类加载时无法创建对象,因为静态方法可以不通过对象调用

所以在类的main方法。所在在类加载时就可以通过main方法入口来运行程序。

注意:组合方式,就是需要在方法中创建一个所需要的对象,并用这个对象来调用任意所需的该对象的内容,不会再受只能访问静态的约束。

3,static修饰初始代码块,这时这个初始代码块就叫做静态初始代码块,这个代码块只在类加载时被执行一次。可以用静态初始代码块初始化一个类。

动态初始代码块,写在类体中的“{}”,这个代码块是在生成对象的初始化属性是运行。这种代码块叫动态初始代码块。

类在什么时候会被加载,构造(创建)对象时会加载类,调用类中静态方法或访问静态属性也是会加载这个静态方法真正所在的类。在构造子类对象时必会先加载父类,类加载会有延迟加载原则,只有在必须加载时才会加载。

final修饰符,可以修饰变量,方法,类

1,final修饰变量

被fianl修饰的变量就会变成常量(常量应当大写),一旦赋值不能改变,(可以在初始化时直接赋值,也可以在构造方法里也可以赋值,只能在这两种方法里二选一,不能不为常量赋值),fianl的常量不会有默认初始值,对于直接在初始化是赋值时final修饰符常和static修饰符一起使用。

2,final修饰方法,被final修饰的方法将不能被其子类覆盖,保持方法的稳定不能被覆盖。

3,final修饰类,被final修饰的类将不能被继承。final类中的方法也都是final的。

注意:final,不能用来修饰构造方法,在父类中如果有常量属性,在子类中使用常量属性时是不会进行父类的类加载。静态常量如果其值可以确定,就不会加载该类,如果不能确定则会加载该常量所在的类。

不变模式,对象一旦创建属性就不会改变。用final修饰属性,也用final修饰类(强不变模式),用final修饰属性(弱不变模式)。

不变模式的典型体现:java.lang.String类,不变模式可以实现对象的共享(可以用一个对象实例赋值给多个对象变量。)

池化的思想,把需要共享的数据放在池中(节省空间,共享数据)

只有String类可以用“”中的字面值创建对象。在String类中,以字面值创建时,会到Java方法空间的串池空间中去查找,如果有就返回串池中字符串的地址,并把这个地址付给对象变量。如果没有则会在串池里创建一个字符串对象,并返回其地址付购对象变量,当另一个以字面值创建对象时则会重复上述过程。

如果是new在堆空间中创建String类的对象,则不会有上述的过程。

String类中的intern()方法会将在堆空间中创建的String类对象中的字符串和串池中的比对,如果有相同的串就返回这个串的串池中的地址。

不变模式在对于对象进行修改,添加操作是使相当麻烦的,他会产生很多的中间垃圾对象。创建和销毁的资源的开销是相当大的。

String类在字符串连接时会先的效率很低,就是因为它所产生的对象的书性是不能够修改的,当连接字符串时也就是只能创建新的对象。

对于很多的字符串连接,应当使用StringBuffer类,在使用这个类的对象来进行字符串连接时就不会有多余的中间对象生成,从而优化了效率。

abstract(抽象)修饰符,可以修饰类和方法

1,abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。

2,abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以";"代替。需要子类继承实现(覆盖)。

注意:有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。

abstract修饰符在修饰类时必须放在类名前。

abstract修饰方法就是要求其子类覆盖(实现)这个方法。调用时可以以多态方式调用子类覆盖(实现)后的方法,也就是说抽象方法必须在其子类中实现,除非子类本身也是抽象类。

注意:父类是抽象类,其中有抽象方法,那么子类继承父类,并把父类中的所有抽象方法都实现(覆盖)了,子类才有创建对象的实例的能力,否则子类也必须是抽象类。抽象类中可以有构造方法,是子类在构造子类对象时需要调用的父类(抽象类)的构造方法。

final和abstract,private和abstract,static和abstract,这些是不能放在一起的修饰符,因为abstract修饰的方法是必须在其子类中实现(覆盖),才能以多态方式调用,以上修饰符在修饰方法时期子类都覆盖不了这个方法,final是不可以覆盖,private是不能够继承到子类,所以也就不能覆盖,static是可以覆盖的,但是在调用时会调用编译时类型的方法,因为调用的是父类的方法,而父类的方法又是抽象的方法,又不能够调用,所以上的修饰符不能放在一起。

抽象(abstract)方法代表了某种标准,定义标准,定义功能,在子类中去实现功能(子类继承了父类并需要给出从父类继承的抽象方法的实现)。

方法一时间想不到怎么被实现,或有意要子类去实现而定义某种标准,这个方法可以被定义为抽象。(abstract)

模板方法模式

用abstract把制订标准和实现标准分开,制定的标准就是模板,实现就是按模板标准来实现,也就是继承模板,实现模板中相应功能的方法。模板中不允许修改的方法可以用fianl来修饰,这个方法不能使抽象方法,为保证安全,封装,把模板中不公开的部分用protected(保护)修饰。

java修饰符作用范围

1、java中的修饰符

1)访问修饰符:

private

被private修饰的属性和方法,不能被其他类访问,子类不能继承也不能访问。只能在所在类内部访问。

缺省

变量或者方法前没有访问修饰符时,可以被所在类访问,可以被同一包内的其他类访问 或者继承。但是不能被其他包访问。

protected

被protected修饰的方法和属性,在同一包内可被访问和继承。不同包内,子类可继承,非子类不能访问。

public

方法和属性前有public修饰,可以被任意包内的类访问。

另外,类要想被其他包导入,必须声明为public。被public修饰的类,类名必须与文件名相同。

2)静态修饰符:

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

静态成员随着类的加载而加载。

静态成员优先于对象存在。

静态成员被所有对象所共享

静态成员多了一个中调用方式,可以被类名直接调用。

java中修饰符是什么?用来干什么的?

public 是访问修饰符 就是访问级别的设置

Public

所有包所有地方都可以访问

Protected

同包以及子类可以访问

Friendly(default)

同包可以访问

Private

除了当前类任何地方都不可以访问

static 修饰的话就是静态块、只会执行一次

什么是java修饰符的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java修饰符号、什么是java修饰符的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-22,除非注明,否则均为首码项目网原创文章,转载请注明出处。