Java语言中的修饰符

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

修饰符 成员方法 构造方法 成员变量 局部变量
abstract Y Y _ _ _
static _ Y _ Y _
public Y Y Y Y _
protected _ Y Y Y _
private _ Y Y Y _
synchronized _ Y _ _ _
native _ Y _ _ _
transient _ _ _ Y _
volatile _ _ _ Y _
final Y Y _ Y Y

1、访问控制修饰符:

Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而只向使用者暴露接口,但隐藏实现细节。

  • 公开级别:用public修饰,对外公开
  • 受保护级别:用protected修饰,向子类及同一个包中的类公开
  • 默认级别:没有访问控制修饰符,向同一个包中的类公开
  • 私有级别:用private修饰,只有 类本身可以访问,不对外公开

顶层类只有默认或公开级别,因此不能用private和protected来修饰。

2、abstract修饰符:

用来修饰类和成员方法,抽象类不能被实例化,抽象方法不提供具体的实现。

  • 抽象类中可以没有抽象方法,但包含了抽象方法的类必须被定义为抽象类
  • 如果子类没有实现父类中所有的抽象方法,那么子类也必须被定义为抽象类
  • 没有抽象构造方法,也没有抽象静态方法
  • 抽象类中可以有非抽象的构造方法,创建子类的实例时可能会调用这些构造方法
  • 抽象类及抽象方法不能被final修饰符修饰(原因?)

3、final修饰符:

  • 具有“不可更改的”意义,它可以修饰非抽象类飞、非抽象成员方法和变量。
  • 用final修饰的类不能被继承,没有子类
  • 用final修饰的方法不能被子类的方法覆盖
  • 用final修饰的变量表示常量,只能被赋一次值
  • final不能用来修饰构造方法,无意义(为什么?)

final类:

  • 不是专门继承而设计的类
  • 出于安全的原因,类的实现细节不允许有任何改动
  • 在创建对象模型时,确信这个类不会再被扩展

final方法:

  • 出于安全的原因,父类不允许子类覆盖某个方法,此时可以把这个方法声明为final

final变量特征:

  • 可以修饰静态变量,实例变量和局部变量,分别表示静态常量,实例常量和局部常量
  • final变量都必须显示初始化
  • final变量只能赋一次值
  • 如果将引用类型的变量用final修饰,那么该变量只能始终只能引用一个对象,但可以改变内容

final定义常量,有如下作用:

  • 提高程序的安全性,禁止非法修改取值固定且不允许改变的数据
  • 提高程序代码的可维护性
  • 提高程序代码的可读性

4、static修饰符:

  • 用static修饰的变量表示静态变量,可以直接通过类名来访问。
  • 用static修饰的成员方法表示静态方法,可以直接通过类名来访问。
  • 用static修饰的程序代码块表示静态代码块,当Java虚拟机加载类时,就会执行该快代码

static变量:

  • 静态变量在内存中只有一个拷贝
  • 对于实例变量每创建一个实例,就分配一次内存;而且互不影响
  • 静态变量能被类的所有实例共享,可作为实例之间进行交流的共享数据

static方法(why)

  • 静态方法中不能用this关键字,也不能直接访问所属类的实例变量和实例方法
  • 可以直接访问所属类的静态变量和静态方法
  • 静态方法中也不能用super关键字
  • 一个静态的方法不能被定义为抽象方法,必须实现

static代码块

  • 类中也可以包含静态代码块,它不存在于任何方法体中。
  • Java虚拟机加载类时会执行这些静态代码块。类的构造方法用于初始化类的实例,而类的静态代码块则可用于初始化类。
  • 静态代码块与静态方法一样,也不能直接访问类的实例变量和实例方法,而必须通过实例的引用来访问
时间: 2024-10-04 17:21:47

Java语言中的修饰符的相关文章

Java面向对象编程之Java语言中的修饰符

近日,读了孙卫琴老师的<Java面向对象编程>一书,心中颇有些感悟,想着将其记录下来. Java中的修饰符 在Java语言中,有这样一些单词(说得再准确点儿,应该是形容词):abstract(抽象的).static(静态的).public(公共的).protected(受保护的).private(私有的).synchronized(同步的).native(本地的).transient(暂时的).volatile(易失的)和final(不可改变的),它们被成为修饰符,这些修饰符可以修饰类.变量和

关于Java语言中那些修饰符

一.在java中提供的一些修饰符,这些修饰符可以修饰类.变量和方法,在java中常见的修饰符有:abstract(抽象的).static(静态的).public(公共的).protected(受保护的).private(私有的).synchronized(同步的).native(本地的).transient(暂时的).volatile(易失的).final(不可改变的) 二.修饰顶层类的修饰符包括abstract.public和final,而static.protected和private不能修

枚举java语言中的修饰符组合

package model; /*22:37 2019/7/20*/ /* top class的修饰符组合 abstract final public 2 * 2 * 2 warning: abstract final 冲突 最终,共有2*(2*2-1)=6种修饰符组合用于top class */ /* public abstract class PublicAbstractClass{} public final class PublicFinalClass{} abstract class

C#语言中的修饰符汇总

1. 访问修饰符 指定声明的类型和类型成员的可访问性. (1) public:对任何类和成员都公开, 无限制访问;是类型和类型成员的访问修饰符.公共访问是允许的最高访问级别.对访问公共成员没有限制. (2) private:仅仅对该类公开;是一个成员访问修饰符.私有访问是允许的最低访问级别.私有成员只有在声明它们的类和结 构体中才是可访问的. (3) internal:只能值包含该类的程序集中访问该类(只是单独的项目,而不是整个解决方案);是类型和类型成员的访问修饰符.只有在同一程序集的文件中,

C#语言中的修饰符

public:公有访问.不受任何限制. private:私有访问.只限于本类成员访问,子类和实例都不能访问. protected:保护访问.只限于本类和子类访问,实例不能访问. internal:内部访问.只限于本项目(程序集)内访问,其他不能访问. protected internal :内部保护访问.只限于本项目或是本类和子类访问,其他不 能访问 1.类(class)    默认的修饰符:private        可以被修饰的:public,private,internal,protec

Java语言中的-----访问修饰符

day04 Java语言中的----访问修饰符 一.访问修饰符概述: 访问修饰符就是对变量或者是方法或者是类的一个修饰,通过修饰以后实现一些必要的权限,主要是说明类成员如何被使用的作用. 二.访问修饰符 1.访问修饰符有哪些? 访问修饰符总共有8种,本文只先给大家说static和final两个修饰符 1.1.final.修饰常量的 1.2.static.修饰静态的 1.3.abstract. 1.4.native. 1.5.sysnchronized.修饰线程的 1.6.transient. 1

Java语言中的权限修饰符

1.Java语言中的权限修饰符主要包括private,public ,default , protected ,这些修饰符控制着对类和类的成员变量以及成员方法的访问. 用权限修饰符修饰变量时的语法格式: puclic 类型  属性0; private 类型 属性1; private 类型 属性2; 类型 属性3;(default权限修饰符一般不写) 如果一个类的成员变量被修饰为private的时候,则该成员变量只能在本类中使用,在子类中是不可见的.如果非要调用,通过get/set方法就可以获取.

Java中的修饰符

在java中,修饰符分为访问权限修饰符和非访问权限修饰符.可以被修饰符修饰的java语言元素有类,变量,方法和接口.下面分别描述在这四个元素上使用修饰符的作用. 类 java中声明类的格式为: 访问修饰符 修饰符 class 类名 extends 父类名称 implements 接口名称{} 其中访问修饰符和修饰符可以互换位置,可以应用于类的访问修饰符为public和package,public表明类可以被任何类使用.package表示包访问权限,它是默认的访问权限,可以省略这个修饰符,使用pa

Java中访问修饰符public、private、protecte、default

Java中访问修饰符public.private.protecte.default的意义讲解:public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”.被其修饰的类.属性以及方法不 仅可以跨类访问,而且允许跨包(package)访问.private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”.被其修饰的类.属性以 及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问.protect: 介于public 和 private 之间的一种访问修饰符,一