【Java】基础:常见修饰符(权限修饰符以及abstract、static、final等)与变量的描述
- 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等)与变量的描述的更多相关文章
- Java语言中的访问权限修饰符
一个Java应用有很多类,但是有些类,并不希望被其他类使用.每个类中都有数据成员和方法成员,但是并不是每个数据和方法,都允许在其他类中调用.如何能做到访问控制呢?就需要使用访问权限修饰符. Java语 ...
- 浅析java修饰符之public default protected private static final abstract
浅析java修饰符之public default protected private static final abstract 一 修饰符的作用:用来定义类.方法或者变量,通常放在语句的最前端 ...
- Java 基础常见知识点&面试题总结(下),2022 最新版!
你好,我是 Guide.秋招即将到来,我对 JavaGuide 的内容进行了重构完善,同步一下最新更新,希望能够帮助你. 前两篇: Java 基础常见知识点&面试题总结(上),2022 最新版 ...
- Java基础常见英语词汇
Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的 ['prəʊɡræmɪŋ]编程 OO: object ...
- Java 基础常见知识点&面试题总结(中),2022 最新版!| JavaGuide
你好,我是 Guide.秋招即将到来,我对 JavaGuide 的内容进行了重构完善,公众号同步一下最新更新,希望能够帮助你. 上篇:Java 基础常见知识点&面试题总结(上),2022 最新 ...
- Java英文单词Java基础常见英语词汇
Java英文单词Java基础常见英语词汇(共70个) ...
- Java基础知识回顾之二 ----- 修饰符和String
前言 在上一篇中,回顾了Java的基本数据类型 ,这篇就来回顾下Java中的一些修饰符以及String. 修饰符介绍 Java修饰符主要分为两类: 访问修饰符 非访问修饰符 其中访问修饰符主要包括 p ...
- Java系列学习(十)-包与权限修饰符
1.形式参数和返回值的问题 (1)形式参数: A:类名:需要该类的对象 B:抽象类名:需要改类的子类对象 C:接口名:需要该接口的实现对象 (2)返回值类型: A:类名:抽象类名:返回的是该类的对象 ...
- Java学习笔记10---访问权限修饰符如何控制成员变量、成员方法及类的访问范围
1.Java有三种访问权限修饰符,分别为public.protected.private,还有一种为缺省权限修饰符的情况,记为default.其中,可以由public和default来修饰类:这四种修 ...
- Java基础(三):修饰符、运算符、循环结构和分支结构
一.Java修饰符: Java语言提供了很多修饰符,主要分为以下两类:访问修饰符和非访问修饰符.修饰符用来定义类.方法或者变量,通常放在语句的最前端. 1.访问控制修饰符: Java中,可以使用访问控 ...
随机推荐
- 3d Max 2013安装失败怎样卸载3dsmax?错误提示某些产品无法安装
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- caffe学习资料
1.利用Caffe做回归(regression) http://www.cnblogs.com/frombeijingwithlove/p/5314042.html
- Easy Touch 摇感控制人物移动
Easy Touch 摇感控制人物移动 public class joystick : MonoBehaviour { public float Speed; //定义速度 p ...
- 明码(C++)
2.明码(结果填空) (满分7分) 注意事项:问题的描述在考生文件夹下对应题号的“题目.txt”中.相关的参考文件在同一目录中.请先阅读题目,不限解决问题的方式,只要求提交结果.必须通过浏览器提交答案 ...
- pat1093. Count PAT's (25)
1093. Count PAT's (25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Peng The strin ...
- The function getUserId must be used with a prefix when a default namespace is not specified 解决办法
The function getUserId must be used with a prefix when a default namespace is not specified 解决方法: 1. ...
- 14.C#/.NET编程中的常见异常(持续更新)
1.Object reference not set to an instance of an object. 未将对象引用(引用)到对象的实例,说白了就是有个对象为null,但是你在用它点出来的各种 ...
- C#开发短信的方法和简介(转)
http://ce.sysu.edu.cn/hope2008/Education/ShowArticle.asp?ArticleID=6337(来自) 自己收藏哈子
- Python开发环境Wing IDE如何检查Python集成
在使用Wing IDE开始代码编辑之前,必须先确保Wing IDE已经成功地找到用户的Python安装位置(如果用户同时安装有多个版本,那么Wing IDE将有限选择最新版).要对这个进行检查,需要调 ...
- 【Microsoft Azure学习之旅】测试消息队列(Service Bus Queue)是否会丢消息
组里最近遇到一个问题,微软的Azure Service Bus Queue是否可靠?是否会出现丢失消息的情况? 具体缘由如下, 由于开发的产品是SaaS产品,为防止消息丢失,跨Module消息传递使用 ...