JAVA中常量必须有的修饰符是_Java基本语法(标识符、修饰
符、关键字)
⼀、标识符
Java 所有的组成部分都需要名字。标识符适⽤于包名、类名、变量名、⽅法名、对象名、数组名、集合名等的命名。
关于 Java 标识符,有以下⼏点需要注意:
1).所有的标识符都应该以字母(a-z或者A-Z),美元符号($),阿拉伯数字(1-9)或者下划线的任意字符组成
2).不能以数字开头
3).关键字不能做标识符
4).java标识符中对字母⼤⼩写要求敏感
实例:
合法标识符举例:age、$salary、_value、__1_value
不合法标识符举例:123abc、-salary
⼆、修饰符
像其他语⾔⼀样,Java可以使⽤修饰符⽤来定义类、⽅法或者变量,来修饰类中⽅法和属性,通常放在语句的最前端。
修饰符可分为以下两类:
1).访问控制修饰符
a).default (即缺省,什么也不写): 在同⼀包内可见,不使⽤任何修饰符。使⽤对象:类、接⼝、变量、⽅法。
b).private : 在同⼀类内可见。使⽤对象:变量、⽅法。 注意:不能修饰类(外部类)
c).public : 对所有类可见。使⽤对象:类、接⼝、变量、⽅法
d).protected : 对同⼀包内的类和所有⼦类可见。使⽤对象:变量、⽅法。 注意:不能修饰类(外部类)。
我们可以通过以下表来说明访问权限:
默认访问修饰符-不使⽤任何关键字
使⽤默认访问修饰符声明的变量和⽅法,对同⼀个包内的类是可见的。接⼝⾥的变量都隐式声明为 public static final,⽽接⼝⾥的⽅法默认情况下访问权限为 public。
如下例所⽰,变量和⽅法的声明可以不使⽤任何修饰符。
私有访问修饰符-private
私有访问修饰符是最严格的访问级别,所以被声明为 private 的⽅法、变量和构造⽅法只能被所属类访问,并且类和接⼝不能声明
为 private。
声明为私有访问类型的变量只能通过类中公共的 getter ⽅法被外部类访问。
Private 访问修饰符的使⽤主要⽤来隐藏类的实现细节和保护类的数据。
下⾯的类使⽤了私有访问修饰符:
实例中,Logger 类中的 format 变量为私有变量,所以其他类不能直接得到和设置该变量的值。为了使其他类能够操作该变量,定义了两个 public ⽅法:getFormat() (返回 format的值)和 setFormat(String)(设置 format 的值)
公有访问修饰符-public
被声明为 public 的类、⽅法、构造⽅法和接⼝能够被任何其他类访问。
如果⼏个相互访问的 public 类分布在不同的包中,则需要导⼊相应 public 类所在的包。由于类的继承性,类所有的公有⽅法和变量都能被其⼦类继承。
以下函数使⽤了公有访问控制:
Java 程序的 main() ⽅法必须设置成公有的,否则,Java 解释器将不能运⾏该类。
受保护的访问修饰符-protected
protected 需要从以下两个点来分析说明:
⼦类与基类在同⼀包中:被声明为 protected 的变量、⽅法和构造器能被同⼀个包中的任何其他类访问;
⼦类与基类不在同⼀包中:那么在⼦类中,⼦类实例可以访问其从基类继承⽽来的 protected ⽅法,⽽不能访问基类实例的protected⽅法。
protected 可以修饰数据成员,构造⽅法,⽅法成员,不能修饰类(内部类除外)。
接⼝及接⼝的成员变量和成员⽅法不能声明为 protected。 可以看看下图演⽰:
⼦类能访问 protected 修饰符声明的⽅法和变量,这样就能保护不相关的类使⽤这些⽅法和变量。
下⾯的⽗类使⽤了 protected 访问修饰符,⼦类重写了⽗类的 openSpeaker() ⽅法。
如果把 openSpeaker() ⽅法声明为 private,那么除了 AudioPlayer 之外的类将不能访问该⽅法。
如果把 openSpeaker() 声明为 public,那么所有的类都能够访问该⽅法。
如果我们只想让该⽅法对其所在类的⼦类可见,则将该⽅法声明为 protected。
访问控制和继承
请注意以下⽅法继承的规则:
⽗类中声明为 public 的⽅法在⼦类中也必须为 public。
⽗类中声明为 protected 的⽅法在⼦类中要么声明为 protected,要么声明为 public,不能声明为 private。
⽗类中声明为 private 的⽅法,不能够被继承。
2).⾮访问控制修饰符
a).static 修饰符,⽤来修饰类⽅法和类变量。
b).final 修饰符,⽤来修饰类、⽅法和变量,final 修饰的类不能够被继承,修饰的⽅法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
c).abstract 修饰符,⽤来创建抽象类和抽象⽅法。
d).synchronized 和 volatile 修饰符,主要⽤于线程的编程。
static 修饰符
静态变量:
static 关键字⽤来声明独⽴于对象的静态变量,⽆论⼀个类实例化多少对象,它的静态变量只有⼀份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。
静态⽅法:
static 关键字⽤来声明独⽴于对象的静态⽅法。静态⽅法不能使⽤类的⾮静态变量。静态⽅法从参数列表得到数据,然后计算这些数据。
对类变量和⽅法的访问可以直接使⽤ classname.variablename 和 hodname 的⽅式访问。
如下例所⽰,static修饰符⽤来创建类⽅法和类变量
以上实例运⾏编辑结果如下:
final 修饰符
~final 变量:
final 表⽰"最后的、最终的"含义,变量⼀旦赋值后,不能被重新赋值。被 final 修饰的实例变量必须显式指定初始值。final 修饰符通常和 static 修饰符⼀起使⽤来创建类常量。
~final ⽅法
类中的 final ⽅法可以被⼦类继承,但是不能被⼦类修改。
声明 final ⽅法的主要⽬的是防⽌该⽅法的内容被修改。
如下所⽰,使⽤ final 修饰符声明⽅法。
~final 类
final 类不能被继承,没有类能够继承 final 类的任何特性。
java接口有没有构造方法
abstract 修饰符
~抽象类:
抽象类不能⽤来实例化对象,声明抽象类的唯⼀⽬的是为了将来对该类进⾏扩充。
⼀个类不能同时被 abstract 和 final 修饰。如果⼀个类包含抽象⽅法,那么该类⼀定要声明为抽象类,否则将出现编译错误。
抽象类可以包含抽象⽅法和⾮抽象⽅法。
~抽象⽅法
抽象⽅法是⼀种没有任何实现的⽅法,该⽅法的的具体实现由⼦类提供。
抽象⽅法不能被声明成 final 和 static。
任何继承抽象类的⼦类必须实现⽗类的所有抽象⽅法,除⾮该⼦类也是抽象类。
如果⼀个类包含若⼲个抽象⽅法,那么该类必须声明为抽象类。抽象类可以不包含抽象⽅法。
抽象⽅法的声明以分号结尾,例如:public abstract sample();。
synchronized 修饰符
synchronized 关键字声明的⽅法同⼀时间只能被⼀个线程访问。synchronized 修饰符可以应⽤于四个访问修饰符。
transient 修饰符
序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
该修饰符包含在定义变量的语句中,⽤来预处理类和变量的数据类型。
volatile 修饰符
volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。⽽且,当成员变量发⽣变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同⼀个值。
⼀个 volatile 对象引⽤可能是 null。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。