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修饰符,它表明该成员变量属于类本身,独立于类产生的任何对象。

java修饰符详解

java修饰符详解

java修饰符详解1. 访问修饰符public:公共的protected:受保护的(不能修饰类)default(默认不写)private:私有的(不能修饰类)修饰符当前类同⼀包内被继承的类(同包)被继承的类(不同包)其他包public能访问能访问能访问能访问能访问protected能访问能访问能访问能/不能不能访问default能访问能访问能访问不能访问不能访问private能访问不能访问不能访问不能访问不能访问注:protected:基类的 protected 成员是包内可见的,并且对⼦类可见若⼦类与基类不在同⼀包中,那么在⼦类中,⼦类实例可以访问其从基类继承⽽来的protected⽅法,⽽不能访问基类实例的protected⽅法2. 特征修饰符abstract:抽象的1. 修饰⽅法⽤abstract修饰符修饰的⽅法只有⽅法的结构没有⽅法执⾏体叫做抽象⽅法注:native修饰的⽅法虽然也没有⽅法体但不是抽⽅法,过程是其他语⾔写的public class Person(){//被abstract修饰的⽅法没有⽅法体public abstract void medth();}2. 修饰类⽤abstract修饰符修饰的类叫做抽象类public abstract class Person(){//抽象类⾥⾯可以有抽象⽅法也可以有普通⽅法//抽象⽅法public abstract void medth();//普通⽅法public void medth1(){System.out.println("这是⼀个普通⽅法");}}3. 特点抽象类中不是必须要有抽象⽅法抽象⽅法必须放在抽象类中或者接⼝中,普通类中不允许有抽象⽅法4. 如何使⽤抽象类中含有构造⽅法,但是我们不能通过调⽤构造⽅法直接创建对象抽象类只能通过⼦类继承来做事//定义⼀个抽象类public abstract class Person(){public abstract void run();}//定义⼀个类并继承Personpublic class Son extends Person(){//重写Person中的run⽅法@Overridepublic void run() {System.out.println("这是我继承我的⽗类重写的⽅法");}}public static void main(String[] args) {son son=new son();son.run();}以上程序执⾏结果为:这是我继承我的⽗类重写的⽅法5.类和类之间的关系:抽象类---单继承---抽象类抽象类---单继承---具体类(⼀般不会出现)具体类---单继承---抽象类不可以(将⽗类的抽象⽅法具体化或⼦类也变成抽象类)final:最终的不可改变的修饰变量如果存储的是值类型:变量内的值不让更改---常量如果存储的是引⽤类型:变量⾥⾯的地址引⽤不让更改---对象唯⼀修饰属性属性如果没有赋值有默认值存在的属性⽤final修饰后必须给属性赋初始值,否则会编译错误修饰⽅法⽅法是最终的⽅法不可以更改(覆盖)final修饰的⽅法,要求不可以被⼦类重写(覆盖)修饰类本⾝类是最终的不可以更改、(太监类)此类不可以被其它⼦类继承static:静态的修饰变量:static修饰的成员变量也叫做静态变量,也叫作类变量,说明这个变量属于类的,⽽不是属于对象的被所有的对象共享,在内存中只有⼀个副本,static成员变量的初始化顺序按照定义的顺序进⾏初始化静态变量必须要静态成员才能调⽤或者访问public class Test(){//定义⼀个静态变量static String name;//这⾥定义⼀个静态⽅法注意:要想使⽤静态变量⽅法也必须定义成静态⽅法//如果不定义成静态⽅法调⽤静态变量就会报错public static void medth(){name="定义的静态变量";System.out.println(name);}public static void main(String[] args){medth();}}以上程序执⾏的结果为:定义的静态变量修饰⽅法:被static修饰的⽅法也叫做静态⽅法,因为对于静态⽅法来说是不属于任何实例对象的public class Test(){//定义⼀个静态变量static String name;//定义⼀个普通的变量int age;//定义⼀个静态⽅法public static void medth(){//打印输出静态nameSystem.out.println(name);//打印输出普通变量ageSystem.out.println(age);}public static void main(String[] args) {medth();}}以上程序执⾏的结果:age是访问不到的,会报错误:⽆法从静态上下⽂中引⽤⾮静态变量age 注:静态变量和普通变量的区别:静态变量属于类变量成员变量属于对象变量静态变量存储在⽅法区的静态区成员变量存储在内存中的堆静态变量随着类的加载⽽加载,随着类的消失⽽消失成员变量随着对象的加载⽽加载,随着对象的消失⽽消失静态通过类名调⽤成员变量通过对象调⽤特点:静态元素在类加载时就初始化了静态元素存储在静态元素区中,每⼀个类有⼀个⾃⼰的区域,与别的类不冲突静态元素只加载⼀次(只有⼀份)全部的类对象及类本⾝共享由于静态元素区加载的时候,有可能没有创建对象,可以通过类名字直接访问GC机制时⽆法管理静态元素的,可以认为是常驻内存⾮静态成员中可以访问静态成员静态成员中可以访问静态成员静态成员中不可以访问⾮静态成员在静态元素中不能出现this或supernative:本地的java源代码中看到native就已经看不到后续的代码了后续会调⽤其他语⾔C++ C执⾏的内存操作帮我们操作内存。

JAva修饰符介绍

JAva修饰符介绍

类的成员方法特性 成员方法特性修饰符 五、 类的成员方法特性修饰符
修饰符 构造器 final abstract static native synchronized strictfp × ● ● ● ● × × × × ● ● ● ● ● × final × abstract × × static × ● × native × ● × ● synchronized × ● × ● ● strictfp ● ● × ● ● ×
类的访问控制修饰符(非内部类 一、 类的访问控制修饰符(非内部类)
修饰符 作用 public 任何地方都能访问 默认修饰符 包访问权限:包内可以访问,包外 无法访问
类的特性修饰符互斥与兼容 非内部类) 特性修饰符互斥与兼容( 二、 类的特性修饰符互斥与兼容(非内部类)
修饰符 作用 final abstract strictfp × ● ● final 类不可派生 abstract 类需要被继承 × strictfp 类中采用严格精确浮 点运算 ● ●
类的成员 成员访问控制修饰符 三、 类的成员访问控制修饰符
作用范围 包外 子类 包内 类内 修饰符 public ● ● ● ● protected × ● ● ● 默认修饰符 × × ● ● private × × × ●
ห้องสมุดไป่ตู้
类的成员变量特性 成员变量特性修饰符 四、 类的成员变量特性修饰符
修饰符 作用 final static volatile transient ● × ● ● ● ● final 不可变更 static 单一拷贝 ● volatile 共享内存 × ● transient 瞬时的 ● ● ●

java第十四讲JAVA修饰符

java第十四讲JAVA修饰符

所以在静态方法中不能直接访问所属类的实例 变量或实例方法,因为java虚拟机无法定位它们。
实例方法可访问的内容 如果一个方法没有用static修饰,那么它就是实例 方法。在实例方法中可以直接访问所属类的静态 变量、静态方法、实例变量和实例方法。
第 十 四 讲 JAVA 修 饰 符
静态的方法必须被实现
(4)抽象类及抽象方法不能被final修饰符修饰, abstract修饰符与final修饰符不能连用,因为抽象 类只有允许创建其子类,它的抽象方法才能被实现, 并且只有它的子类才能被实例化,而用final修饰的 类不允许拥有子类,用final修饰的方法不允许被子 类方法覆盖,所以不能连用。 抽象类的一个重要特征是不允许实例化。
被static所修饰的成员变量和成员方法表明 归某个类所有,它不依赖于类的特定实例,被 类的所有实例共享。只要这个类被加载,java 虚拟机就能根据类名在运行时,在数据区的方 法区内定位到它们。 静态变量和实例变量的区别如下: 静态变量在内存中只有一个拷贝,运行时 java虚拟机只为静态变量分配一次内存,在加载 类的过程中完成静态变量的内存分配。可以直接 通过类名访问静态变量。
3)final变量只能赋值一次值。
4)如果将引用的类型的变量用final修饰,那么该 变量只能始终引用一个对象,但可以改变对象的内 容。
在程序中通过final修饰符来定义变量,具有以下作 用: 1)提高程序的安全性
第 十 四 讲 JAVA 修 饰 符
2)提高程序代码的可维护性
3)提高代码的可读性
TestFinal.java
有个pear类继承Fruits类。有一个属性color,定 义含有一个参数的构造函数,并调用父类的构造函数; 实现getTotal() 方法,返回num和price的乘积。实现 getAdd() 方法,返回num和price的和。 在TestFruits类中实例化一个Apple类对象和一个 Pear对象,并分别调用getTotal()和getAdd()方法。

java修饰符

java修饰符

学生学号0121010680202 实验课成绩武汉理工大学学生实验报告书实验课程名称 Java程序设计开课学院计算机科学与技术学院指导老师姓名祁明龙学生姓名何巍学生专业班级软件sy1001班201 2 —2013 学年第 1 学期Java修饰符介绍一、引言java中的修饰符分为类修饰符,字段修饰符,方法修饰符。

根据功能的不同,主要分为以下几种。

1、权限访问修饰符public,protected,default,private,这四种级别的修饰符都可以用来修饰类、方法和字段。

包外子类包内类内public yes yes yes yesprotected no yes yes yesdefault no no yes yesprivate no no no yes2、final修饰符final的意思是不可变,他可以修饰类、字段、方法。

修饰类后类不能被扩展(extends),也就是不能被继承。

修饰字段后字段的值不能被改变,因此如果有final修饰字段,应该对字段进行手动初始化。

修饰方法后该方法不能被改变,也就是重写。

3、abstract修饰符abstract是抽象的意思,用来修饰类和方法,修饰类后,该类为抽象类,不能被实例化,必需进行扩展。

修饰方法后,该方法为抽象方法必须被子类重写(override)。

4、static修饰符static用来修饰内部类,方法,字段。

修饰内部类说明该内部类属于外部类而不属于外部类的某个实例。

修饰字段说明该字段属于类而不属于类实例。

修饰方法说明该方法属于类而不属于类实例。

类修饰符Public可以从其他类中访问obstract本类不能被实例化final不能再声明子类构造器修饰符Public可以从所有的类中访问Protected只能从自己的类和它的子类中访问Private只能在本类中访问域修饰符Public可以从所有的类中访问Protected只能从本类和它的子类中访问Private只能从本类中访问它Static对该类的所有实例只能有一个域值存在transient不是一个对象持久状态的一部份V olatile可以被异步的线程所修改final必须对它赋予初值并且不能修改它局部变量修饰符final必须对它赋予初值并且不能修改它方法修饰符Public可以从所有的类中访问它Protected只能从本类及其子类中访问它Private只能从本类中访问它abstract没有方法体,属于一个抽象类final子类不能覆盖它static被绑定于类本身而不是类的实例native该方法由其他编程语言实现asnchronized在一个线程调用它之前必须先给它加、、、、、、、、、、、、、、、、关于Java中各种修饰符与访问修饰符的说明类:访问修饰符修饰符class 类名称extends 父类名称implement 接口名称(访问修饰符与修饰符的位置可以互换)访问修饰符名称说明备注public可以被所有类访问(使用)public类必须定义在和类名相同的同名文件中package可以被同一个包中的类访问(使用)默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中private修饰内部类修饰符名称说明备注final使用此修饰符的类不能够被继承abstract如果要使用abstract类,之前必须首先建一个继承abstract类的新类,新类中实现abstract类中的抽象方法。

java中的修饰符

java中的修饰符

java中的修饰符static 表示静态,它可以修饰属性,方法和代码块。

1,static修饰属性(实例变量)(类变量),这个属性就可以用类名.属性名来访问,这个属性成为本类的类变量,为本类对象所共有。

这个属性全类公有。

(共有的类变量与对象无关,只和类有关)。

例:Java代码1.public class Test{2.private static int testnum;3./*4.如果实力变量前加上了static修饰符那么,这个变量叫做类变量5.*/6.……7.}类加载的过程,类本身是保存在文件中(字节码文件保存着类的信息)的,java 通过I/O流把类的文件(字节码文件)读入JVM(java虚拟机),这个过程称为类的加载。

JVM(java虚拟机)通过类路径(CLASSPATH)来找要加载的字节码文件。

类变量,在加载时自动初始化,初始化规则和实例变量相同。

注意:类中的实例变量在创建对象时被初始化,static修饰的属性,类变量,在类加载时创建并进行初始化,类加载的过程只进行一次。

类变量只会被创建并初始化一次。

2,static修饰方法(静态方法),使这个方法成为整个类所公有的方法,用类名.方法名访问。

例:Java代码1.public class Test{2.private static int num;3.public int testage;4.public static int test(){5.num++;6.Test t=new Test();7.t.age8./*9.在静态方法中只能防问静态属性,但是可以通过一上的10.组合方式进行访问11.*/12.}13.}注意:1) static修饰的方法,不直接能访问(可以通过组合方式访问)本类中非静态(static)成员(包括方法和属性),本类非静态(static)方法可以访问本类静态成员(包括方法和属性),可以调用静态方法。

静态方法要慎重使用。

第7章Java语言中的修饰符 java课件

第7章Java语言中的修饰符 java课件
public class Sample{ private int var; public Sample(int var){ this.var=var; } public static void main(String args[]){ final Sample s=new Sample(1); s.var=2; //s=new Sample(2); } }
public class Sample{ private final int var1=1; public Sample(){ //var1=2 } public void method(final int p){ final int var2=1; //var2++; //p++; } }
7.4 static修饰符
} }

因为静态方法不需要 通过它所属的类的任 何实例就会被调用, 因此在静态方法中不 能使用this、super关 键字,不能直接访问 所属类的实例变量和 实例方法,但是可以 直接访问所属类的静 态变量和静态方法。
public class Base{ int var1; static int var2; public void method1(){} public static void method2(){ int var; this.var++; } public static void method3(){ var1++; var2++; method1(); method2(); } } class Sub extends Base{ int var; public static void method4(){ super.method1(); method2(); } }

Java修饰符

Java修饰符

1. 类修饰符访问修饰符:公共类修饰符public非访问控制符:抽象类修饰符abstract 、最终类修饰符final(1)公共类修饰符public :Java 语言中类的访问控制符只有public 即公共的。

每个Java 程序的有且只有一个类是public,它被称为主类,其他外部类无访问控制修饰符,具有包访问性。

注意:一个类的内部类可以被其他访问控制修饰符protected、default、private修饰,相当于类的成员。

(2)抽象类修饰符abstract :用abstract 修饰符修饰的类,被称为抽象类。

(3)最终类修饰符final :当一个类不能被继承时可用修饰符final修饰为最终类。

被定义为final 的类通常是一些有固定作用、用来完成某种标准功能的类。

(4)类缺省访问控制符:如果一个类没有访问控制符,说明它具有缺省的访问控制符特性。

此时,这个类只能被同一个包中的类访问或引用。

这一访问特性又称为包访问性。

2.方法修饰符访问控制修饰符:公共访问控制符public、保护访问控制符protected、缺省默认default、私有访问控制符private非访问控制符:抽象方法控制符abstract 、静态方法控制符static 、最终方法控制符final 、本地方法控制符native 、同步方法控制符synchronized(1)抽象方法控制符abstract :用修饰符abstract 修饰的方法称为抽象方法。

抽象方法仅有方法头,没有方法体和操作实现。

(2)静态方法控制符static :用修饰符static 修饰的方法称为静态方法。

静态方法是属于整个类的类方法;而不使用static 修饰、限定的方法是属于某个具体类对象的方法。

由于static方法是属于整个类的,所以它不能操纵和处理属于某个对象的成员变量,而只能处理属于整个类的成员变量,即static 方法只能处理static的域。

(3)最终方法控制符final :用修饰符final修饰的方法称为最终方法。

Java修饰符

Java修饰符

Java修饰符一、大体分析:Java中的修饰符分为类修饰符,字段修饰符,方法修饰符。

按照功能分类可以分为以下几种:(1)、权限访问修饰符public,protected,default,private,这四种级别的修饰符都可以用来修饰类、方法和字段。

(2)、final修饰符final的意思是不可变,他可以修饰类、字段、方法。

修饰类后类不能被扩展(extends),也就是不能被继承。

修饰字段后字段的值不能被改变,因此如果有final修饰字段,应该对字段进行手动初始化。

修饰方法后该方法不能被改变,也就是重写。

(3)、abstract修饰符abstract是抽象的意思,用来修饰类和方法,修饰类后,该类为抽象类,不能被实例化,必需进行扩展。

修饰方法后,该方法为抽象方法必须被子类重写(override)。

(4)、static修饰符static用来修饰内部类,方法,字段。

修饰内部类说明该内部类属于外部类而不属于外部类的某个实例。

修饰字段说明该字段属于类而不属于类实例。

修饰方法说明该方法属于类而不属于类实例。

二、表格阐明:修饰符作用范围三、具体说明:1.public protected default private 组public 权限最大,同类,同包,不同包,同包子类父类之间,不同包子类父类之间都可以访问。

java 默认的权限是default,即friendly(注:friendly 在java中没有,是c的说法。

) 同类,同包,同包子类父类都可以访问。

protected受保护的,同类,同包,同包子类父类,不同包子类父类都可以访问private 私有的权限最小,同类可以访问。

public 访问权限最高,不论是不是同一个包或是否是子类都可以访问protected 其次只有是不同包且不是子类的无法访问外,其它均可默认级别次之,要求只能是同一个包中的类才能访问private 只能是同一个类才能访问这些修饰符可以修饰方法或者属性,但是类只能用public 或者不写.实例1结果图:(Eclipse下运行)2. final 修饰符final 具有不可更改的意思,它可以修饰非抽象类,非抽象成员方法和变量。

Java修饰符

Java修饰符

Java的主要修饰符使用————武汉理工大学软件工程1001班————杨海涛Java的修饰符(Modifier)是一组用来描述与刻画类、属性、构造方法与成员方法的系统关键字。

主要包括访问权限控制修饰符与特征修饰符:一:访问权限控制修饰符简称访问控制修饰符或访问修饰符,其作用是指明类、属性或方法是否可以被程序里的其它部分访问和调用它们,哪些不可以。

public,protected,default,private,这四种级别的修饰符都可以用来修饰类、方法和字段。

包外子类包内类内public yes yes yes yes protected no yes yes yes default no no yes yes private no no no yes二:特征修饰符是用来刻画类、成员变量或成员方法特定特征的修饰符,针对不同的对象,特征修饰符的内容也各不相同。

成员变量的特征修饰符包括:访问控制修饰符,静态属性修饰符(static修饰符),最终属性修饰符(final修饰符),临时变量修饰符(transient修饰符),易变属性修饰符(volatile修饰符)。

访问控制修饰符包括:公共访问修饰符(public修饰符),缺省的包修饰符,保护访问修饰符(protected修饰符),私有访问修饰符(private修饰符)。

成员方法的修饰符包括:访问控制修饰符,静态属性修饰符(static修饰符),最终方法修饰符(final修饰符),抽象方法修饰符(abstract修饰符),本地方法修饰符(native修饰符),同步方法修饰符(synchronized修饰符)。

访问控制修饰符包括:公共访问修饰符(public修饰符),缺省的包修饰符,保护访问修饰符(protected修饰符),私有访问修饰符(private修饰符)。

1、类的修饰符分为:可访问控制修饰符和非访问控制符两种。

访问控制修饰符包括:public修饰符和缺省的包修饰符;非访问控制符包括:抽象类修饰符abstract,最终类修饰符final。

java主要修饰符的使用

java主要修饰符的使用

目录Java主要修饰符的使用“说明书” (1)一、public、protected和private (2)一)对类的类型的修饰 (2)二)未标注此类类型的成员变量和成员函数 (2)三)public、protected和private在子类中的可见情况 (3)四)public、protected和private在非子类中的可见情况 (8)二、final (10)(一)对类类型的修饰 (10)(二)final修饰的成员函数 (11)(三)final修饰的成员变量 (11)三、static (12)附录:原函数 (14)一)father.java (14)二)childinsamepa.java (16)三) childindifferentp.java (17)四)AFINALCLASS.java (18)五)DEFFERENTPAKAEGEIMPORT.java (19)六)FORSTATIC.java (19)七)ROOT.java (20)——武汉理工软件1003班0121010680328 陈莹伊Java主要修饰符的使用“说明书”示例用工作空间结构:一、public、protected和private一)对类的类型的修饰类的类型只能使用public修饰,或者省略。

二)未标注此类类型的成员变量和成员函数未标注类型的成员变量和成员函数在java类中的使用可见类别不同于public、protected和private。

当成员变量和成员函数无这三个修饰符修饰,无论是该类的子类还是非子类,只要是和该类属于同一个包,这些成员变量和成员函数都是可见的。

而对于不属于同一个包的类,它们则是不可见的。

示例用class father的成员列表:在同包子类中的可见情况:在不同包子类中的可见情况:在同包非子类中的可见情况:在不同包非子类中的可见情况:三)public、protected和private在子类中的可见情况father类成员表列:a)对于子类而言,无论是否属于同一个包,父类中的public类型和protected 类型变量和函数在子类中是可见的。

java修饰符

java修饰符

java修饰符⼀、访问修饰符1.1 private访问控制符当前类访问权限如果⼀个成员⽅法或成员变量名前 使⽤了 private 访问控制符,那么这个成员只能在这个类的内部使⽤。

1.2 default 访问控制符包访问权限(默认)default访问控制的成员或外部类可以被相同包下的其他类访问;default不能修饰变量。

1.3 protected 访问控制符⼦类访问权限基类的 protected 成员是包内可见的,并且对⼦类可见;若⼦类与基类不在同⼀包中,那么在⼦类中,⼦类实例可以访问其从基类继承⽽来的protected⽅法,⽽不能访问基类实例的protected⽅法。

1.4 public 访问控制符公共访问权限可以 被所有的类访问,不管访问类与被访问类是否在同⼀个包中。

⼆、⾮访问修饰符2.1 static修饰符⽤来修饰类⽅法和类变量。

static的真正作⽤就是⽤于区分Field、⽅法、内部类、初始化块这四种成员到底属于类本⾝还是属于实例。

2.1.1特点static修饰的变量属于类变量,多个对象共享同⼀个static变量;static修饰的⽅法属于静态⽅法,静态⽅法不能重写(不属于某个对象),不能使⽤this关键字(⽆法指向合适的对象);可以直接通过“类名 . 属性/⽅法”的⽅式访问静态属性和静态⽅法,不需要创建类的对象;静态成员不能直接访问⾮静态成员。

静态成员属于类,不需要⽣成对象就存在了,⽽⾮静态需要⽣成对象才产⽣. 所以静态成员不能直接访问2.2 final修饰符意思是最终的、不可修改的,最见不得变化,⽤来修饰类、⽅法和变量2.2.1特点final修饰的类不能被继承,final类中的所有成员⽅法都会被隐式地指定为final⽅法;final修饰的⽅法不能被重写;final修饰的变量是常量,如果是基本数据类型的变量,则其数值⼀旦在初始化之后便不能更改;如果是引⽤类型的变量,则在对其初始化之后便不能再让其指向另⼀个对象。

相关主题
  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。

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

相关文档
最新文档