关于Java中各种修饰符与访问修饰符的说明

访问

补充一下JAVA的基础知识(转)
关于Java中各种修饰符与访问修饰符的说明

类:
访问修饰符  修饰符  class 类名称 extends 父类名称 implement 接口名称

(访问修饰符与修饰符的位置可以互换)

访问修饰符

名称

说明

备注

public

可以被所有类访问(使用)

public类必须定义在和类名相同的同名文件中

package

可以被同一个包中的类访问(使用)

默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中

 

修饰符

名称

说明

备注

final

使用此修饰符的类不能够被继承

 

abstract

如果要使用abstract类,之前必须首先建一个继承abstract类的新类,新类中实现abstract类中的抽象方法。

类只要有一个abstract方法,类就必须定义为abstract,但abstract类不一定非要保护abstract方法不可

 

 

 

 

变量
l         Java中没有全局变量,只有方法变量、实例变量(类中的非静态变量)、类变量(类中的静态变量)。

l         方法中的变量不能够有访问修饰符。所以下面访问修饰符表仅针对于在类中定义的变量。

l         声明实例变量时,如果没有赋初值,将被初始化为null(引用类型)或者0、false(原始类型)。

l         可以通过实例变量初始化器来初始化较复杂的实例变量,实例变量初始化器是一个用{}包含的语句块,在类的构造器被调用时运行,运行于父类构造器之后,构造器之前。

l         类变量(静态变量)也可以通过类变量初始化器来进行初始化,类变量初始化器是一个用static{}包含的语句块,只可能被初始化一次。

访问修饰符

名称

说明

备注

public

可以被任何类访问

 

protected

可以被同一包中的所有类访问

可以被所有子类访问

子类没有在同一包中也可以访问

private

只能够被当前类的方法访问

 

缺省

无访问修饰符

可以被同一包中的所有类访问

如果子类没有在同一个包中,也不能访问

 

修饰符

名称

说明

备注

static

静态变量(又称为类变量,其它的称为实例变量)

可以被类的所有实例共享。

并不需要创建类的实例就可以访问静态变量

final

常量,值只能够分配一次,不能更改

注意不要使用const,虽然它和C、C++中的const关键字含义一样

可以同static一起使用,避免对类的每个实例维护一个拷贝

transient

告诉编译器,在类对象序列化的时候,此变量不需要持久保存

主要是因为改变量可以通过其它变量来得到,使用它是为了性能的问题

volatile

指出可能有多个线程修改此变量,要求编译器优化以保证对此变量的修改能够被正确的处理

 

 

方法
访问修饰符 修饰符 返回类型 方法名称(参数列表)throws 违例列表

l         类的构造器方法不能够有修饰符、返回类型和throws子句

l         类的构造器方法被调用时,它首先调用父类的构造器方法,然后运行实例变量和静态变量的初始化器,然后才运行构造器本身。

l         如果构造器方法没有显示的调用一个父类的构造器,那么编译器会自动为它加上一个默认的super(),而如果父类又没有默认的无参数构造器,编译器就会报错。super必须是构造器方法的第一个子句。

l         注意理解private构造器方法的使用技巧。

访问修饰符

名称

说明

备注

public

可以从所有类访问

 

protected

可以被同一包中的所有类访问

可以被所有子类访问

子类没有在同一包中也可以访问

private

只能够被当前类的方法访问

 

缺省

无访问修饰符

可以被同一包中的所有类访问

如果子类没有在同一个包中,也不能访问

 

修饰符

名称

说明

备注

static

静态方法(又称为类方法,其它的称为实例方法)

提供不依赖于类实例的服务

并不需要创建类的实例就可以访问静态方法

final

防止任何子类重载该方法

注意不要使用const,虽然它和C、C++中的const关键字含义一样

可以同static一起使用,避免对类的每个实例维护一个拷贝

abstract

抽象方法,类中已声明而没有实现的方法

不能将static方法、final方法或者类的构造器方法声明为abstract

native

用该修饰符定义的方法在类中没有实现,而大多数情况下该方法的实现是用C、C++编写的。

参见Sun的Java Native接口(JNI),JNI提供了运行时加载一个native方法的实现,并将其于一个Java类关联的功能

synchronized

多线程的支持

当一个此方法被调用时,没有其它线程能够调用该方法,其它的synchronized方法也不能调用该方法,直到该方法返回

 

接口
访问修饰符 interface 接口名称 extends 接口列表

l         接口不能够定义其声明的方法的任何实现

l         接口中的变量总是需要定义为“public static final 接口名称”,但可以不包含这些修饰符,编译器默认就是这样,显示的包含修饰符主要是为了程序清晰

访问修饰符

名称

说明

备注

public

所有

 

无访问修饰符(默认)

同一个包内

 

 

时间: 2024-09-17 04:20:22

关于Java中各种修饰符与访问修饰符的说明的相关文章

Java中成员方法与成员变量访问权限详解_java

记得在一次面试的笔试题中,有的面试官会要求写出具体的像pullic这些访问限定符的作用域.其实,平常我都没去系统的考虑这些访问限定符的作用域,特别是包内包外的情况,OK,笔试不行了.  这是java基本的知识,也是公司看重的,那没办法啦,我的脑袋记不住东西,那我只能把这些东西写下来方便自己温故知新,不废话了,贴代码了. 代码如下: package com.jaovo; /** *_1_ 成员变量访问权限的求证 * public private protected default(默认的权限) *

这个Public Stop(){} 类中 有很多个没有访问修饰符的方法 请问这些方法的作用是干嘛的啊

问题描述 publicvoidStop(){this.threadNeedQuit=true;while(this.thread!=null&&this.thread.ThreadState!=ThreadState.Stopped)Thread.Sleep(1);this.thread=null;this.waitingOrderList.CollectionChanged-=this.waitingOrderList_CollectionChanged;this.UnloadDevic

Java 中的内部类

什么是 Java 中的内部类 问:什么是内部类呢? 答:内部类( Inner Class )就是定义在另外一个类里面的类.与之对应,包含内部类的类被称为外部类. 问:那为什么要将一个类定义在另一个类里面呢?清清爽爽的独立的一个类多好啊!! 答:内部类的主要作用如下: 1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类 2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据 3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便

java中的Static class

Java中的类可以是static吗?答案是可以.在java中我们可以有静态实例变量.静态方法.静态块.类也可以是静态的.      java允许我们在一个类里面定义静态类.比如内部类(nested class).把nested class封闭起来的类叫外部类.在java中,我们不能用static修饰顶级类(top level class).只有内部类可以为static.      静态内部类和非静态内部类之间到底有什么不同呢?下面是两者间主要的不同.     (1)内部静态类不需要有指向外部类的

Java中静态方法的线程安全问题

问题描述 Java中静态方法的线程安全问题 Java中多个线程同时访问一个静态方法是否存在线程安全问题? 比如以下代码,两个线程同时对方法中b修改不同的值,会有线程安全问题吗? new Thread(new Runnable() { @Override public void run() { fun(0); } }).start(); new Thread(new Runnable() { @Override public void run() { fun(1); } }).start(); }

举例详解Java中的访问权限修饰符_java

访问权限符:(1)public: 对于成员来说:任何其他类都可以访问它们,不管在同一个包中还是在另外的包中. 对于类来说:    也是一样.(2)friendly: 对于成员老说:如果一个类的成员没有任何权限修饰,那么它门就是缺省包访问权限,用friendly来表示,注 意friendly不是Java中的关键字,这里是个人喜欢的方式用它表示而已.同一个包内其它类可以访问,但包外 就不可以.对于同一个文件夹下的.没有用package的classes,Java会自动将这些classes初见为隶属于该

Java中的访问修饰符详细解析_java

1.类的修饰符分为:可访问控制符和非访问控制符两种. 可访问控制符是:公共类修饰符 public 非访问控制符有:抽象类修饰符 abstract :最终类修饰符 final 1 )公共类修饰符 public : Java 语言中类的可访问控制符只有一个: public 即公共的.每个 Java 程序的主类都必须是 public 类作为公共工具供其它类和程序使用的应定义为 public 类. 2 )抽象类修饰符 abstract :凡是用 abstract 修饰符修饰的类,被称为抽象类.所谓抽象类

关于Java中修饰符的总结(fina除外)_java

public/protected/private public表示公开,private表示私有,protected表示保护,什么都不写表示默认default. 方法: public protected default private √ √ √ √ 同一类中 √ √ √ × 同一包中 √ √ × × 子类中 √ × × × 不同包中 成员变量: 考虑的安全性和健壮性的问题,成员变量一般为私有,并对外提供一些public的方法修改成员变量,在修改的方法中对输入进行判断和控制. Private成员变

Java访问修饰符

Java关于访问权限的关键字有三个:private.protected以及public,同时Java还有一个默认的访问权限--包权限,所以Java总共有四种访问权限控制. public和private没什么好说的,public允许在所有地方访问,而private只能在本类以及内部类中进行访问. 容易混淆的是protected和默认的访问权限,时间长了就不太容易表述两者的差别,下面通过一个例子来说明这两者的差别. 基类位于包main.access下,代码如下: package main.acces