Java 修饰符-牛耳教育

合集下载

java 修饰符

java 修饰符
四个访问修饰符:
private 表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有的,只对本类可见
不能通过对象点的方式访问数据
现在来说说为什么要把数据定义为私有
把数据定义为私有通过公有方法来访问数据,这是一个规范
public 表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用,对一切可见
| 不同包中子类 | 否 | 否 | 是 | 是 |
|不同包中非子类| 否 | 否 | 否 | 是 |
| 修饰符 | 类 |成员访求|构造方法|成员变量|局部变量|
| abstract 抽象的 | √ | √ | - | - | - |
类修饰符
Public 可以从其他类中访问
obstract 本类不能被实例化
final 不能再声明子类
构造器修饰符
Public 可以从所有的类中访问
Protected 只能从自己的类和它的子类中访问
Private 只能在本类中访问
域修饰符
Public 可以从所有的类中访问
| priБайду номын сангаасate 私有的 | - | √ | √ | √ | - |
|synchronized 同步的 | - | √ | - | - | - |
| native 本地的 | - | √ | - | - | - |
final 必须对它赋予初值并且不能修改它
方法修饰符
Public 可以从所有的类中访问它
Protected 只能从本类及其子类中访问它
Private 只能从本类中访问它
abstract 没有方法体,属于一个抽象类

java修饰符整理

java修饰符整理

Java修饰符总结1引言众所周知,Java语言是一种具有良好面向对象特性的语言,加上其良好的可移植性Java语言受到广泛的欢迎。

要实现其良好的面向对象的特性就要具有良好的封装性,而要做到具有良好的封装性就需要具有功能强大的修饰符。

通过对Java的学习发现Java的修饰符有很多很复杂,很难理清头绪,所以在此做一个系统的总结,以增进对Java修饰符的理解,便于以后的学习。

java中的修饰符分为类修饰符,字段修饰符,方法修饰符。

按照功能分类可以分为以下几种:1.public使用对象:类、接口、成员介绍:无论它所处在的包定义在哪,该类(接口、成员)都是可访问的。

2.private使用对象:成员介绍:成员只可以在定义它的类中被访问3.static使用对象:类、方法、字段、初始化函数介绍:成名为static的内部类是一个顶级类,它和包含类的成员是不相关的。

静态方法是类方法,是被指向到所属的类而不是类的实例。

静态字段是类字段,无论该字段所在的类创建了多少实例,该字段只存在一个实例被指向到所属的类而不是类的实例。

初始化函数是在装载类时执行的,而不是在创建实例时执行的。

4.final使用对象:类、方法、字段、变量介绍:被定义成final的类不允许出现子类,不能被覆盖(不应用于动态查询),字段值不允许被修改。

5.abstract使用对象:类、接口、方法介绍:类中包括没有实现的方法,不能被实例化。

如果是一个a bstract方法,则方法体为空,该方法的实现在子类中被定义,并且包含一个abstract方法的类必须是一个abstract类6.protected使用对象:成员介绍:成员只能在定义它的包中被访问,如果在其他包中被访问,则实现这个方法的类必须是该成员所属类的子类。

7.native使用对象:成员介绍:与操作平台相关,定义时并不定义其方法,方法的实现被一个外部的库实现。

8.strictfp使用对象:类、方法介绍:strictfp修饰的类中所有的方法都隐藏了strictfp修饰词,方法执行的所有浮点计算遵守IEEE 754标准,所有取值包括中间的结果都必须表示为float或double类型,而不能利用由本地平台浮点格式或硬件提供的额外精度或表示范围。

Java 修饰符

Java 修饰符

Java 修饰符Java语言提供了很多修饰符,主要分为以下两类:∙访问修饰符∙非访问修饰符修饰符用来定义类、方法或者变量,通常放在语句的最前端。

我们通过下面的例子来说明:访问控制修饰符Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。

Java支持4种不同的访问权限。

默认的,也称为default,在同一包内可见,不使用任何修饰符。

私有的,以private修饰符指定,在同一类内可见。

共有的,以public修饰符指定,对所有类可见。

受保护的,以protected修饰符指定,对同一包内的类和所有子类可见。

默认访问修饰符-不使用任何关键字使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。

接口里的变量都隐式声明为public static final,而接口里的方法默认情况下访问权限为public。

实例:如下例所示,变量和方法的声明可以不使用任何修饰符。

私有访问修饰符-private私有访问修饰符是最严格的访问级别,所以被声明为private的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为private。

声明为私有访问类型的变量只能通过类中公共的getter方法被外部类访问。

Private访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。

下面的类使用了私有访问修饰符:实例中,Logger类中的format变量为私有变量,所以其他类不能直接得到和设置该变量的值。

为了使其他类能够操作该变量,定义了两个public方法:getFormat() (返回format的值)和setFormat(String)(设置format的值)公有访问修饰符-public被声明为public的类、方法、构造方法和接口能够被任何其他类访问。

如果几个相互访问的public类分布在不同的包中,则需要导入相应public类所在的包。

由于类的继承性,类所有的公有方法和变量都能被其子类继承。

JAVA修饰符总结

JAVA修饰符总结

JAVA修饰符总结Java修饰符用于控制类、方法、变量和构造方法的访问级别和特性。

Java提供了多种修饰符,包括访问修饰符、非访问修饰符和继承修饰符。

本篇文章将对这些修饰符进行总结,并提供一些使用示例。

一、访问修饰符Java提供了四种访问修饰符:public、protected、default(默认)和private。

这些修饰符的使用不仅可以控制类的访问级别,还可以控制方法、变量和构造方法的访问级别。

1. public修饰符public修饰符具有最高的访问级别,被public修饰的类、方法、变量和构造方法可以被所有其他类访问。

示例代码:```public class MyClasspublic void myMethoSystem.out.println("This method can be accessed by any other class.");}public class OtherClasspublic static void main(String[] args)obj.myMethod(;}```2. protected修饰符protected修饰符限制了对同一包内的其他类的访问,以及对其他包中的子类的访问。

示例代码:```package mypackage;public class MyClassprotected void myMethoSystem.out.println("This method can be accessed by classes in the same package and subclasses in other packages.");}package otherpackage;import mypackage.MyClass;public class SubClass extends MyClasspublic static void main(String[] args)obj.myMethod(;}```3. default(默认)修饰符默认修饰符是指当没有使用任何访问修饰符时,所使用的修饰符。

Java 基础语法-牛耳教育

Java 基础语法-牛耳教育

Java 基础语法一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。

下面简要介绍下类、对象、方法和实例变量的概念。

对象:对象是类的一个实例,有状态和行为。

例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。

类:类是一个模板,它描述一类对象的行为和状态。

方法:方法就是行为,一个类可以有很多方法。

逻辑运算、数据修改以及所有动作都是在方法中完成的。

实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。

第一个Java程序下面看一个简单的Java程序,它将打印字符串Hello World实例public class HelloWorld { /* 第一个Java程序* 它将打印字符串Hello World */ public static void main(String []args) { System.out.println("Hello World"); // 打印Hello World } }运行实例»下面将逐步介绍如何保存、编译以及运行这个程序:∙打开Notepad,把上面的代码添加进去;∙把文件名保存为:HelloWorld.java;∙打开cmd命令窗口,进入目标文件所在的位置,假设是C:\∙在命令行窗口键入javac HelloWorld.java 按下enter键编译代码。

如果代码没有错误,cmd命令提示符会进入下一行。

(假设环境变量都设置好了)。

∙再键入java HelloWorld 按下Enter键就可以运行程序了你将会在窗口看到Hello WorldC : > javac HelloWorld.javaC : > java HelloWorld Hello WorldGif 图演示:基本语法编写Java程序时,应注意以下几点:∙大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。

java修饰符

java修饰符

Static修饰符:1.static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块。

2.被static修饰的成员变量和成员方法独立于该类的任何对象。

也就是说,它不依赖类特定的实例,被类的所有实例共享。

只要这个类被加载(也就是在new的时候),Java 虚拟机就能根据类名在运行时数据区的方法区内定找到他们。

因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

比如说有一个类名是Test的类那么当你new Test()的时候用static修饰的成员变量和成员方法就会被加载,也就是说可以通过Test.……的方式去调用。

3.1)static变量按照是否静态的对类成员变量进行分类可分两种:一种是被static修饰的变量,叫静态变量或类变量;另一种是没有被static修饰的变量,叫实例变量。

两者的区别是:对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。

对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。

所以一般在需要实现以下两个功能时使用静态变量:? 在对象之间共享值时? 方便访问变量时2)静态方法静态方法可以直接通过类名调用,任何的实例也都可以调用,因此静态方法中不能用this和super关键字,不能直接访问所属类的实例变量和实例方法(就是不带static的成员变量和成员成员方法),只能访问所属类的静态成员变量和成员方法(如果要访问的话就必须将类实例化成对象)。

因为实例成员与特定的对象关联!这个需要去理解,想明白其中的道理,不是记忆!!!因为static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。

例如为了方便方法的调用,Java API中的Math类中所有的方法都是静态的,而一般类内部的static方法也是方便其它类对该方法的调用。

java主要修饰符的使用

java主要修饰符的使用

Java主要修饰符的使用软件1004班杨娜0121010680433java主要修饰符的使用一、类及其成员的访问权限Java为类中成员设置了四种访问权限,为类设置了两种访问权限。

(一)类中成员的访问权限Java主要定义了四种权限修饰符:public(共有)、protected (保护)、缺省和private(私有)。

这四种权限修饰符均可用于声明类中成员的访问权限,例如:private int year,month,day;public void print();四种权限修饰符用于声明类中成员的访问权限,说明如下:1、public:说明该类成员可被所有类的对象访问。

public指定最大访问权限范围。

2、protected:说明该类成员可被同一类中的其他成员或其子类成员,或同一包中的其他类访问,不能被其他包中的非子类访问。

protected指定中间级的有限的访问权限范围,使保护成员在子类和非子类中具有不同的访问权限,即保护成员可被子类访问,不能被非子类访问。

3、缺省:当没有使用访问权限修饰符声明成员时,说明该类成员能被同一类中的其他成员访问或被同一包中的其他类访问,不能被包之外的其他类访问。

缺省权限以包为界划定访问权限范围,是同一包中的类具有访问权限,其他包中的类则没有访问权限。

4、private:说明该类成员只能被同一类中的其他成员访问,不能被其他类的成员访问,也不能被子类成员访问。

private指定最小访问权限范围,对其他类隐藏类的成员,防止其他类修改该类的私有成员。

注意:public等访问权限修饰符不能用于修饰方法体中的局部变量,因为方法体中局部变量的作用域仅限于该方法,在类之外是不可见的,不存在其他类对他的访问。

四种权限修饰符定义的访问权限如表所示:(二)类的访问权限声明一个类可使用的权限修饰符只有两种:public和缺省,不能使用protected和private。

一个源程序文件中可以声明多个类,但用public修饰的类只能有一个,且该类名必须与文件名相同。

java修饰符

java修饰符

Java修饰符的使用武汉理工大学计算机科学与技术学院软件工程 1004班陈文伟理论部分java中的类和方法的修饰符Java程序在定义类时,除了使用class关键字标识之外,还可以在class之前增加若干类的修饰符来修饰限定所定义的类的特性。

类的修饰符分为访问控制符和非访问控制符两大类。

修饰符之间的先后排列次序对类的性质没有任何影响。

一,非访问修饰符。

abstract修饰符Abstract修饰符表示所修饰的类没有完全实现,还不能实例化。

如果在类的方法声明中使用abstract修饰符,表明该方法是一个抽象方法,它需要在子类实现。

如果一个类包含抽象函数,则这个类也是抽象类,必须使用abstract修饰符,并且不能实例化。

在下面的情况下,类必须是抽象类:1.类中包含一个明确声明的抽象方法;2.类的任何一个父类包含一个没有实现的抽象方法;3.类的直接父接口声明或者继承了一个抽象方法,并且该类没有声明或者实现该抽象方法。

如下例所示:abstract class a1{public int v1;abstract void test();}abstract class a2 extends a1{public int v2;}class Sample extends v2{void test() { }}因为包含一个抽象方法test,类v1必须被声明为抽象类。

它的子类v2继承了抽象方法test,但没有实现它,所以它也必须声明为抽象类。

然而,v2的子类Sample因为实现了test,所以它不必声明为抽象的。

注意: 如果试图创建一个抽象类的实例就会产生编译错误;如果一个类是非抽象类却包含一个抽象方法,就会产生编译错误;构造函数和静态函数以及Final修饰的函数不能使用abstract修饰符;接口缺省为abstractStatic修饰符通常,在创建类的实例时,每个实例都会创建自己实例变量。

但是在变量的声明中可以使用Static修饰符,它表明该成员变量属于类本身,独立于类产生的任何对象。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java 修饰符Java语言提供了很多修饰符,主要分为以下两类:访问修饰符非访问修饰符修饰符用来定义类、方法或者变量,通常放在语句的最前端。

我们通过下面的例子来说明:public class className { // ... } private boolean myFlag; static final double weeks = 9.5; protected static final int BOXWIDTH = 42; public static void main(String[] arguments) { // 方法体}访问控制修饰符Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。

Java 支持4 种不同的访问权限。

∙default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符。

使用对象:类、接口、变量、方法。

∙∙private : 在同一类内可见。

使用对象:变量、方法。

注意:不能修饰类(外部类)∙∙public : 对所有类可见。

使用对象:类、接口、变量、方法∙∙protected : 对同一包内的类和所有子类可见。

使用对象:变量、方法。

注意:不能修饰类(外部类)。

∙我们可以通过以下表来说明访问权限:访问控制修饰符当前类同一包内子孙类(同一包) 子孙类(不同包) 其他包public Y Y Y Y Yprotected Y Y Y Y/N(说明)Ndefault Y Y Y N Nprivate Y N N N N默认访问修饰符-不使用任何关键字使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。

接口里的变量都隐式声明为public static final,而接口里的方法默认情况下访问权限为public。

如下例所示,变量和方法的声明可以不使用任何修饰符。

实例String version = "1.5.1"; boolean processOrder() { return true; }私有访问修饰符-private私有访问修饰符是最严格的访问级别,所以被声明为private的方法、变量和构造方法只能被所属类访问,并且类和接口不能声明为private。

声明为私有访问类型的变量只能通过类中公共的getter 方法被外部类访问。

Private 访问修饰符的使用主要用来隐藏类的实现细节和保护类的数据。

下面的类使用了私有访问修饰符:public class Logger { private String format; public String getFormat() { return this.format; } public void setFormat(String format) { this.format = format; } }实例中,Logger 类中的format 变量为私有变量,所以其他类不能直接得到和设置该变量的值。

为了使其他类能够操作该变量,定义了两个public 方法:getFormat() (返回format的值)和setFormat(String)(设置format 的值)公有访问修饰符-public被声明为public 的类、方法、构造方法和接口能够被任何其他类访问。

如果几个相互访问的public 类分布在不同的包中,则需要导入相应public 类所在的包。

由于类的继承性,类所有的公有方法和变量都能被其子类继承。

以下函数使用了公有访问控制:public static void main(String[] arguments) { // ... }Java 程序的main() 方法必须设置成公有的,否则,Java 解释器将不能运行该类。

受保护的访问修饰符-protectedprotected 需要从以下两个点来分析说明:∙子类与基类在同一包中:被声明为protected 的变量、方法和构造器能被同一个包中的任何其他类访问;∙∙子类与基类不在同一包中:那么在子类中,子类实例可以访问其从基类继承而来的protected 方法,而不能访问基类实例的protected方法。

∙protected 可以修饰数据成员,构造方法,方法成员,不能修饰类(内部类除外)。

接口及接口的成员变量和成员方法不能声明为protected。

可以看看下图演示:子类能访问protected 修饰符声明的方法和变量,这样就能保护不相关的类使用这些方法和变量。

下面的父类使用了protected 访问修饰符,子类重写了父类的openSpeaker() 方法。

class AudioPlayer { protected boolean openSpeaker(Speaker sp) { // 实现细节} } class StreamingAudioPlayer extends AudioPlayer { protected boolean openSpeaker(Speaker sp) { // 实现细节} }如果把openSpeaker() 方法声明为private,那么除了AudioPlayer 之外的类将不能访问该方法。

如果把openSpeaker() 声明为public,那么所有的类都能够访问该方法。

如果我们只想让该方法对其所在类的子类可见,则将该方法声明为protected。

protected 是最难理解的一种Java 类成员访问权限修饰词,更多详细内容请查看Java protected 关键字详解。

访问控制和继承请注意以下方法继承的规则:∙父类中声明为public 的方法在子类中也必须为public。

∙∙父类中声明为protected 的方法在子类中要么声明为protected,要么声明为public,不能声明为private。

∙∙父类中声明为private 的方法,不能够被继承。

∙非访问修饰符为了实现一些其他的功能,Java 也提供了许多非访问修饰符。

static 修饰符,用来修饰类方法和类变量。

final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。

abstract 修饰符,用来创建抽象类和抽象方法。

synchronized 和volatile 修饰符,主要用于线程的编程。

static 修饰符∙静态变量:∙static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。

静态变量也被称为类变量。

局部变量不能被声明为static 变量。

∙∙静态方法:∙static 关键字用来声明独立于对象的静态方法。

静态方法不能使用类的非静态变量。

静态方法从参数列表得到数据,然后计算这些数据。

∙对类变量和方法的访问可以直接使用classname.variablename和classname.methodname的方式访问。

如下例所示,static修饰符用来创建类方法和类变量。

public class InstanceCounter { private static int numInstances = 0; protected static int getCount() { return numInstances; } private static void addInstance(){ numInstances++; } InstanceCounter() { InstanceCounter.addInstance(); } public static void main(String[] arguments) { System.out.println("Starting with " + InstanceCounter.getCount() + " instances"); for (int i = 0; i < 500; ++i){ new InstanceCounter(); } System.out.println("Created " + InstanceCounter.getCount() + " instances"); } }以上实例运行编辑结果如下:Starting with 0 instancesCreated 500 instancesfinal 修饰符final 变量:final 表示"最后的、最终的"含义,变量一旦赋值后,不能被重新赋值。

被final 修饰的实例变量必须显式指定初始值。

final 修饰符通常和static 修饰符一起使用来创建类常量。

实例public class Test{ final int value = 10; // 下面是声明常量的实例public static final int BOXWIDTH = 6; static final String TITLE = "Manager"; public void changeValue(){ value = 12; //将输出一个错误} }final 方法类中的final 方法可以被子类继承,但是不能被子类修改。

声明final 方法的主要目的是防止该方法的内容被修改。

如下所示,使用final 修饰符声明方法。

public class Test{ public final void changeName(){ // 方法体} }final 类final 类不能被继承,没有类能够继承final 类的任何特性。

实例public final class Test { // 类体}abstract 修饰符抽象类:抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充。

一个类不能同时被abstract 和final 修饰。

如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。

抽象类可以包含抽象方法和非抽象方法。

实例abstract class Caravan{ private double price; private String model; private String year; public abstract void goFast(); //抽象方法public abstract void changeColor(); } 抽象方法抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供。

抽象方法不能被声明成final 和static。

任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。

相关文档
最新文档