【Java】基础:常见修饰符(权限修饰符以及abstract、static、final等)与变量的描述
2021-07-17 07:05
标签:val 抽象 自动 定义 静态块 highlight class 描述 bst 1. 修饰符 · public、protected、 private、default 修饰类时的访问权限 能够修饰的位置 · abstract 、static、 final、 transient、violatile、synchronized 总述:可修饰的位置(空白处为无此用法) abstract - 抽象类、抽象方法 static:静态变量、静态方法、静态代码块 final 1. final 修饰的类无法被继承; 2. final 修饰的方法无法在子类中重写(override) 3. final 修饰变量:基本类型变量,初始化后数值无法更改;引用类型变量,初始化之后不能再指向另一个对象。 4. final static修饰的为常量 transient synchronized为线程内容,在稍后的博文中描述; violatile、native少有接触,以后再另作描述。 2. 变量 根据声明的位置划分: 成员变量、局部变量、类变量 根据所属数据类型划分:基本数据类型,引用数据类型 变量的值可以在声明时指定,也可以在构造方法中指定,还可以在静态语句块中初始化。 实例变量对于类中的方法/构造方法/语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见 但为了对类的使用者可见,大多数静态变量声明为public类型 方法/构造方法/语句块被执行时创建;执行完毕后销毁 数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。 【Java】基础:常见修饰符(权限修饰符以及abstract、static、final等)与变量的描述 标签:val 抽象 自动 定义 静态块 highlight class 描述 bst 原文地址:https://www.cnblogs.com/tubybassoon/p/9524973.html
当前类
同包
子孙类
其它包
public
√
√
√
√
protected
√
√
√
×
private
√
√
×
×
default/缺省
√
×
×
×
类
方法
变量
public
√
√
√
protected
×
√
√
private
×
√
√
default/缺省
√
√
√
public class A{}
class B{}
类
方法
变量
代码块
abstract
√
√
static
√
√
√
final
√
√
√
transient
√
native
√
violatile
√
synchronized
√
√
√
/**
1. 被abstract修饰的类即为抽象类;
2. 抽象类的权限修饰符为public,缺省(如下)也为public;
3. 抽象类无法创建对象(即不能new);
4. 其余情况与普通类相同。
*/
abstract class animal {
int num;//成员变量可使用任何访问权限修饰词(public、protected、private)
/**
1. 抽象方法必须为public或protected,缺省即为public;
2. 抽象方法没有方法体,即符号{};
3. 子类中必须实现抽象方法,否则子类仍为抽象类。
*/
abstract void run();
}
class lion extends animal{
void run(){}
}
public class Test {
public static int a = 100; //静态变量
public int b = 100; //实例变量
//静态方法
public static void method_a() {
System.out.println("===static method===");
}
//实例方法
public void method_b() {
System.out.println("===instance method===");
}
public static void method_c() {
int c = 0; //局部变量
a = 5; //可访问[静态变量]
method_a(); //可调用[静态方法]
//b = 5; 不能访问[实例变量]
//method_b(); 不能调用[实例方法]
}
public static void main(String[] args) {
Test t = new Test(); //创建实例化对象
int static_var = Test.a; //[类名.静态变量名]访问
int instance_var = t.b; //[对象.变量名]访问
Test.method_a(); //[类名.静态方法名]访问
t.method_b(); //[对象.方法名]访问
}
static { //静态块,在类加载时自动执行块中的内容
int d = 1;
int c = 0; //局部变量
a = 5; //可访问[静态变量]
method_a(); //可调用[静态方法]
//b = 5; 不能访问[实例变量]
//method_b(); 不能调用[实例方法]
}
}
public class Test {
int a; //持久化
transient int b; //非持久化
}
实例变量(成员变量)
局部变量
类变量(静态变量)
修饰符
修饰符不可出现
必须有static
定义位置
类中,方法、构造方法与语句块之外
声明在方法、构造方法、语句块
类中,方法、构造方法与语句块之外
访问
对象调用
类名.变量名
可见
相关方法、构造方法或者语句块
与实例变量具有相似的可见性。
生存时间
与对象共存亡
在程序开始时创建,在程序结束时销毁。
分配位置
堆 (heap)
栈 (stack)
静态存储区(方法区)
默认值
同类变量
没有默认值,必须初始化才能使用
下一篇:java-深克隆和浅克隆
文章标题:【Java】基础:常见修饰符(权限修饰符以及abstract、static、final等)与变量的描述
文章链接:http://soscw.com/index.php/essay/106189.html