• 1. 修饰符

    • public、protected、private、default
    • abstract、static、final、
      • abstract:抽象类、抽象方法
      • static:静态变量、静态方法、静态代码块
      • final修饰类、方法、变量
    • transient、violatile、native、synchronized
  • 2. 变量
    • 实例变量、局部变量、类变量

1. 修饰符

· public、protected、 private、default

类的访问权限

  当前类 同包其它类 子孙类 其它包的类
public
protected ×
default/缺省 × ×
private × × ×

能够修饰的位置

  类/接口 方法 变量
public
protected ×
private ×
default/缺省 √  
public class A{}
class B{}

· abstract 、static、 final、 transient、violatile、synchronized

总述:可修饰的位置(空白处为无此用法)

  方法 变量 代码块
abstract    
static  
final  
transient      
native    √    
violatile      √  
synchronized  √  

abstract - 抽象类、抽象方法

/**
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(){}
}

static:静态变量、静态方法、静态代码块

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(); 不能调用[实例方法]
} } 

 final

1. final 修饰的类无法被继承;

2. final 修饰的方法无法在子类中重写(override)

3. final 修饰变量:基本类型变量,初始化后数值无法更改;引用类型变量,初始化之后不能再指向另一个对象。

4. final static修饰的为常量

transient

public class Test {
int a; //持久化
transient int b; //非持久化
}

synchronized为线程内容,在稍后的博文中描述;

violatile、native少有接触,以后再另作描述。

2. 变量

根据声明的位置划分: 成员变量、局部变量、类变量

根据所属数据类型划分:基本数据类型,引用数据类型

  实例变量(成员变量) 局部变量 类变量(静态变量)
修饰符   修饰符不可出现 必须有static
定义位置 类中,方法、构造方法与语句块之外 声明在方法、构造方法、语句块 类中,方法、构造方法与语句块之外

变量的值可以在声明时指定,也可以在构造方法中指定,还可以在静态语句块中初始化。

访问 对象调用   类名.变量名
可见

实例变量对于类中的方法/构造方法/语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见

相关方法、构造方法或者语句块 与实例变量具有相似的可见性。

但为了对类的使用者可见,大多数静态变量声明为public类型

生存时间  与对象共存亡

方法/构造方法/语句块被执行时创建;执行完毕后销毁

 在程序开始时创建,在程序结束时销毁。
分配位置  堆 (heap) 栈 (stack) 静态存储区(方法区) 
默认值 同类变量  没有默认值,必须初始化才能使用

数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。

【Java】基础:常见修饰符(权限修饰符以及abstract、static、final等)与变量的描述的更多相关文章

  1. Java语言中的访问权限修饰符

    一个Java应用有很多类,但是有些类,并不希望被其他类使用.每个类中都有数据成员和方法成员,但是并不是每个数据和方法,都允许在其他类中调用.如何能做到访问控制呢?就需要使用访问权限修饰符. Java语 ...

  2. 浅析java修饰符之public default protected private static final abstract

    浅析java修饰符之public default protected private static final abstract 一   修饰符的作用:用来定义类.方法或者变量,通常放在语句的最前端 ...

  3. Java 基础常见知识点&面试题总结(下),2022 最新版!

    你好,我是 Guide.秋招即将到来,我对 JavaGuide 的内容进行了重构完善,同步一下最新更新,希望能够帮助你. 前两篇: Java 基础常见知识点&面试题总结(上),2022 最新版 ...

  4. Java基础常见英语词汇

    Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的                             ['prəʊɡræmɪŋ]编程 OO: object ...

  5. Java 基础常见知识点&面试题总结(中),2022 最新版!| JavaGuide

    你好,我是 Guide.秋招即将到来,我对 JavaGuide 的内容进行了重构完善,公众号同步一下最新更新,希望能够帮助你. 上篇:Java 基础常见知识点&面试题总结(上),2022 最新 ...

  6. Java英文单词Java基础常见英语词汇

    Java英文单词Java基础常见英语词汇(共70个)                                                                          ...

  7. Java基础知识回顾之二 ----- 修饰符和String

    前言 在上一篇中,回顾了Java的基本数据类型 ,这篇就来回顾下Java中的一些修饰符以及String. 修饰符介绍 Java修饰符主要分为两类: 访问修饰符 非访问修饰符 其中访问修饰符主要包括 p ...

  8. Java系列学习(十)-包与权限修饰符

    1.形式参数和返回值的问题 (1)形式参数: A:类名:需要该类的对象 B:抽象类名:需要改类的子类对象 C:接口名:需要该接口的实现对象 (2)返回值类型: A:类名:抽象类名:返回的是该类的对象 ...

  9. Java学习笔记10---访问权限修饰符如何控制成员变量、成员方法及类的访问范围

    1.Java有三种访问权限修饰符,分别为public.protected.private,还有一种为缺省权限修饰符的情况,记为default.其中,可以由public和default来修饰类:这四种修 ...

  10. Java基础(三):修饰符、运算符、循环结构和分支结构

    一.Java修饰符: Java语言提供了很多修饰符,主要分为以下两类:访问修饰符和非访问修饰符.修饰符用来定义类.方法或者变量,通常放在语句的最前端. 1.访问控制修饰符: Java中,可以使用访问控 ...

随机推荐

  1. Unity 为什么有时候播放音乐(音效)会没有声音

    1.问题描述 昨晚,我遇到的情况如下: 1.MainCamera里有Audio Source,并且在循环播放音乐 2.在其他的GameObject中也新增一个Audio Source,在某个时机播放音 ...

  2. 跟我一起用python画你所想吧!

    0.库的引入 要想画图,我们先倒入两个库. import numpy as np import matplotlib.pyplot as plt 注:以下代码全都基于导入这两个库的前提下编写的. 1. ...

  3. Linux小知识(1): bash中执行数据库的相关操作

    工作中经常会遇到命令行操作数据库或登陆至其他服务器等情况,往往需要通过命令行进入相关的数据库或登陆至相关的服务器,再执行指令操作,因此有没有方法,在命令行或bash脚本中模拟进入数据库或登陆服务器操作 ...

  4. HDU 5592——ZYB's Premutation——————【线段树单点更新、单点查询】

    ZYB's Premutation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  5. HDU 2255 ——奔小康赚大钱——————【KM算法裸题】

    奔小康赚大钱 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  6. HDU 5352——MZL's City——————【二分图多重匹配、拆点||网络流||费用流】

    MZL's City Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  7. 文件监控只FileSystemWatcher控件

    FileSYstemWatcher控件是用来监控一个文件系统或监控文件变化.该控件会通知文件创建.修改.删除的消息,分别通过Created事件.Changed事件和Deleted事件来处理对应的操作 ...

  8. Spring-cloud学习线路

    学习本学习路线学习完,大家将会对微服务.Spring Cloud.Docker.Kubernetes有一个系统.全面的认识.通过学习,将能掌握相关的知识体系,并能够投入到项目实战中去. 本学习路线采用 ...

  9. spring-boot学习之属性配置

    通过@value注解,将配置文件中的内容引入

  10. Python函数(1)

    一.Python函数介绍 函数时组织好的,可重复的,用来实现单一,或相关联功能的代码段. 函数的使用原则时先定义,后调用:事先准备工具的过程即函数的定义,遇到应用场景拿来当工具用即函数的调用. 函数的 ...