当前位置:文档之家› 类、方法、成员变量和局部变量的可用修饰符 !!!

类、方法、成员变量和局部变量的可用修饰符 !!!

类、方法、成员变量和局部变量的可用修饰符 !!!
类、方法、成员变量和局部变量的可用修饰符 !!!

类的修饰符整合

一.类

类的修饰符:

Public:可以在其他任何类中使用,默认为统一包下的任意类。

Abstract:抽象类,不能被实例化,可以包含抽象方法,抽象方法没有被实现,无具体功能,只能衍生子类。

Final:不能被继承。

二.变量

变量修饰符:

一个类的成员变量的声明必须在类体中,而不能在方法中,方法中声明的是局部变量。

1. 可访问修饰符:

2. static:类变量:一个类所拥有的变量,不是类的每个实例有的变量。类变量是指不管类创建了多少对象,系统仅在第一次调用类的时候为类变量分配内存,所有对象共享该类的类变量,因此可以通过类本身或者某个对象来访问类变量。

3. final:常量。

4. volatile:声明一个可能同时被并存运行的几个线程所控制和修改的变量。

实例变量:和类变量对应,即每个对象都拥有各自独立的实例变量。

三.方法:(和变量对象分为实例方法和类方法,并用有无static修饰区别)

类方法:使用static关键字说明的方法

1.第一次调用含类方法的类是,系统只为该类创建一个版本,这个版本被该类和该类的所有实例共享。

2.类方法只能操作类变量,不能访问实例变量。类方法可以在类中被调用,不必创建实例来调用,当然也可以通过对象来调用。

实例方法:实例方法可以对当前对象的实例变量操作,而且可以访问类变量。

方法可以重载,要求:方法名相同,但是参数必须有区别。(参数不同可以使类型不同,顺序不同,个数不同)

方法的返回类型:若无返回类型,则声明为void.

方法中的变量作用域:

1. 成员变量:整个类。

2. 局部变量:定义起到方法块结束为止。

3. 方法参数:整个方法或者构造方法。

4. 异常处理参数:参数传递给异常处理方法。

构造方法:和类同名的方法。为新建对象开辟内存空间后,用于初始化新建的对象。不能用对象显式的调用。

静态初始化器:格式:static{<赋值语句组>}

静态初始化器与构造方法的区别:

方法的修饰符:

抽象方法:用abstract修饰,只有声明部分,方法体为空,具体在子类中完成。

类方法:静态方法,用static修饰,

1. 调用时,使用类名作为前缀,而不是类的某个实例对象名

2. 不能被单独对象拥有,属于整个类共享。

3. 不能处理成员变量。

最终方法:用final修饰,不能被子类重新定义的方法。

本地方法:用native修饰的方法,表示用其他语言书写的特殊方法,包括C,C++,FORTRAN,汇编语言等。

四.类成员的访问控制符:

即类的方法和成员变量的访问控制符,一个类作为整体对象不可见,并不代表他的所有域和方法也对程序其他部分不可见,需要有他们的访问修饰符判断。

权限如下:

成员方法成员变量

成员变量 成员变量是指类的一些属性定义,标志类的静态特征,它的基本格式如下:访问修饰符修饰符类型属性名称=初始值; ?访问修饰符:可以使用四种不同的访问修饰符中的一种,包括public(公共的)、protected(受保护的),无修饰符和private(私有的)。public 访问修饰符表示属性可以从任何其它代码调用。private 表示属性只可以由该类中的其它方法来调用。protected 将在以后的课程中讨论。 ?修饰符:是对属性特性的描述,例如后面会学习到的:static、final 等等。 ?类型:属性的数据类型,可以是任意的类型。 ?属性名称:任何合法标识符 ?初始值:赋值给属性的初始值。如果不设置,那么会自动进行初始化,基本类型使用缺省值,对象类型自动初始化为null。 成员变量有时候也被称为属性、实例变量、域,它们经常被互换使用。 成员方法 成员方法就是对象所具有的动态功能。Java 类中方法的声明采用以下格式:访问修饰符修饰符返回值类型方法名称(参数列表) throws 异常列表{方法体} ?访问修饰符:可以使用四种不同的访问修饰符中的一种,包括public、protected、无修饰符和private。public 访问修饰符表示方法可以从任何其它代码调用。private表示方法只可以由该类中的其它方法来调用。protected 将在以后的课程中讨论。 ?修饰符:是对方法特性的描述,例如后面会学习到的:static、final、abstract、synchronized 等等。 ?返回值类型:表示方法返回值的类型。如果方法不返回任何值,它必须声明为void(空)。Java 技术对返回值是很严格的,例如,如果声明某方法返回一个int值,那么方法必须从所有可能的返回路径中返回一个int值(只能在等待返回该int值的上下文中被调用。) ?方法名称:可以是任何合法标识符,并带有用已经使用的名称为基础的某些限制条件。 ?参数列表:允许将参数值传递到方法中。列举的元素由逗号分开,而每一个元素包含一个类型和一个标识符。在下面的方法中只有一个形式参数,用int类型和标识符days 来声明:public void test(int days){} ?throws 异常列表:子句导致一个运行时错误(异常)被报告到调用的方法中,以便以合适的方式处理它。异常在后面的课程中介绍。 ?花括号内是方法体,即方法的具体语句序列。 示例:比如现在有一个“车”的类——Car,“车”具有一些基本的属性,比如四个轮子,一个方向盘,车的品牌等等。当然,车也具有自己的功能,也就是方法,比如车能够“开动”——run。

C++类的成员变量和成员函数

类可以看做是一种数据类型,它类似于普通的数据类型,但是又有别于普通的数据类型。类这种数据类型是一个包含成员变量和成员函数的集合。 类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存。但是,在定义类的时候不能对成员变量赋值,因为类只是一种数据类型或者说是一种模板,本身不占用内存空间,而变量的值则需要内存来存储。 类的成员函数也和普通函数一样,都有返回值和参数列表,它与一般函数的区别是:成员函数是一个类的成员,出现在类体中,它的作用范围由类来决定;而普通函数是独立的,作用范围是全局的,或位于某个命名空间内。 上节我们在示例中给出了Student 类的定义,如下所示: 1.class Student{ 2.public: 3.//成员变量 4.char*name; 5.int age; 6.float score; 7. 8.//成员函数 9.void say(){ 10.cout<

1.class Student{ 2.public: 3.//成员变量 4.char*name; 5.int age; 6.float score; 7. 8.//成员函数 9.void say();//函数声明 10.}; 11. 12.//函数定义 13.void Student::say(){ 14.cout<

java中的类修饰符

java中的类修饰符、成员变量修饰符、方法修饰符。 类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类。 abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现。 final,将一个类生命为最终(即非继承类),表示他不能被其他类继承。 friendly,默认的修饰符,只有在相同包中的对象才能使用这样的类。 成员变量修饰符: public(公共访问控制符),指定该变量为公共的,他可以被任何对象的方法访问。 private(私有访问控制符)指定该变量只允许自己的类的方法访问,其他任何类(包括子类)中的方法均不能访问。 protected (保护访问控制符)指定该变量可以别被自己的类和子类访问。在子类中可以覆盖此变量。 friendly ,在统一报中的类可以访问,其他包中的类不能访问。 final,最终修饰符,指定此变量的值不能变。 static(静态修饰符)指定变量被所有对象共享,即所有实例都可以使用该变量。

transient(过度修饰符)指定该变量是系统保留,暂无特别作用的临时性变量。 volatile(易失修饰符)指定该变量可以同时被几个线程控制和修改。 方法修饰符: public(公共控制符) private(私有控制符)指定此方法只能有自己类等方法访问,其他的类不能访问(包括子类) protected(保护访问控制符)指定该方法可以被它的类和子类进行访问。 final,指定该方法不能被重载。 static,指定不需要实例化就可以激活的一个方法。 synchronize,同步修饰符,在多个线程中,该修饰符用于在运行前,对他所属的方法加锁,以防止其他线程的访问,运行结束后解锁。 native,本地修饰符。指定此方法的方法体是用其他语言在程序外部编写的。

JAVA的两种成员变量

介绍java类的两种成员变量 个人分类:转载文章关键词:java两种介绍成员变量 (鉴于该文看到的同学比较多,现在回过头又认真审查了一边,在结尾处更新了一些比较易于掌握的信息,希望能对各位同学有所帮助) java类的两种成员变量:一种没有static修饰,为实例变量,一另种是被static关键字修饰的变量,叫类变量或者静态变量。在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。 顺序运行时的区别:实例变量属于某个对象的属性。其中的实例变量才会被分配空间,必需创立了实例对象。才干使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要顺序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了总之,实例变量必需创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。 例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar 变量,并且每创建一个实例对象,这个staticVar 就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配 内存,静态变量位于方法区,被类的所有实例共享。静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期。 而实例变量取决于类的实例。每创建一个实例,java虚拟机就会为实例变量分配一次

内存,实例变量位于堆区中,其生命周期取决于实例的生命周期。 结果为: 1 0 (成员变量具有缺省值而局部变量则没有) 把代码改为: 结果则为 1 静态变量和实例变量的区别,可参考以下代码,

java访问权限修饰符

java访问权限修饰符public protected default private用法总结 首先声明:java中,default这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是default。为了条理清晰,分三种不同情况来总结。 一访问权限修饰符修饰成员变量和方法 public:表明该成员变量和方法是共有的,能在任何情况下被访问。 protected:必须在同一包中才能被访问。(说的比较简单,看个例子就明白了) eg:class A { protected int weight; protected int f( int a,int b ) { // 方法体 } } 假设B与A在同一个包中,则 class B { void g() { A a=new A(); A.weight=100;//合法 A.f(3,4); //合法 } } 特别说明:什么是在同一个包中? 答:用package打包在一起的class ,叫在同一个包中。(不明白,举个例子) eg:在JDK的src\java\io中,你会看到许多java类,第一句源代码都是package java.io; 没有使用package打包的,在同一目录下的类也会被视做同一个包。 default:在这种情况下中,同protected。区别在第二和第三种情况中。 eg: class A { int weight ; int f( int a,int b ) { // 方法体 } }

假设B与A在同一个包中,则 class B { void g() { A a=new A(); A.weight=100;//合法 A.f(3,4); //合法 } } private:只能在本类中访问。 eg: class Test { private int money; Test() { money=2000; } private int getMoney() { return money; } public static void main(String args[]) { Test te=new Test(); te.money=3000; //合法 int m=te.getMoney(); //合法 System.out.println("money="+m); } } PS:实际上,把重要的数据修饰为private,然后写一个public的函数访问它,正好体现了OOP的封装特性,是OOP安全性的体现。 二访问权限修饰符修饰类 1,不能用protected和private修饰类。 2,用default修饰的类叫友好类,在另外一个类中使用友好类创建对象时,要保证它们在同一包中。 三访问权限修饰符与继承 这里的访问修饰符指的是修饰成员变量和方法。可以分为两种情况: 1,子类与父类在同一包中 此时只有声明为private的变量与方法不能被继承(访问)。

静态成员函数一般情况下只能访问静态成员变量

静态成员函数一般情况下只能访问静态成员变量,因为不接受隐含的this指针。另外作为类的静态成员函数,不用声明对象,便可直接调用,例如类A的静态成员函数fun(); A::fun(); 1、主要用于封装全局变量和全局函数。以避免在文件作用域内包含带外部连接的数据。 例如全局变量:int path;int para1; 解决办法:设计一个全局类,并将这些全局名称声明为静态变量,并编写静态函数来调用这些变量。 class Global{ static int s_path; static int s_para; private: Global();//不实现,避免无意中的实例化 public: //manipulators static void setPath(int path){s_path = path;} static void setPara(int para){s_para = para;} //accessors static int getPath(){return s_path;} static int getPara(){return s_para;} } 2、对自由函数的封装 在.h文件的文件作用域内避免使用自由函数(运算符函数除外);在.c文件中避免使用带有外部连接的自由函数,因此可以使用静态成员函数进行处理。 例如:int getPara();int getPath();我们可以通过声明一个结构的静态方法代替: struct SysUtil{ static int getPath(); static int getPara(); }这样,唯一有冲突危险的就是出现类名SysUtil了。

Java 修饰符-牛耳教育

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 Y protected Y Y Y Y/N(说明)N default Y Y Y N N private Y N N N N 默认访问修饰符-不使用任何关键字 使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为public static final,而接口里的方法默认情况下访问权限为public。

Java 继承之子父类中的成员变量和函数

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 Java 继承之子父类中的成员变量和函数 2015/05/09 102 //父类。class Fu{ int num = 3;}class Zi extends Fu{ int num = 4; void show() { System.out.println(“num= “+this.num);}}class ExtendsDemo { public static void main(String[] args) { Zi z = new Zi(); z.show(); }}从一张图来看它的原理: 图有点乱,看一下顺序吧。在代码中,super 和this 的用法很相似,this 代表的 是本类对象的引用,super 代表的是父类的内存空间。 成员函数:【子父类中成员函数的特点】特殊情况:子父类中的定义了一模一 样的函数。运行的结果:子类的函数在运行。这种情况在子父类中,是函数的另一个 特性:override(重写,覆盖,复写) 重写什么时候用?举例: //描述手机。class Phone{ int number; //打电话。void call(){} //来电显示。void show() { sop(“电话号码..”+number); }}Phone p = new Phone();p.show();随着电话的升级,只显示号码不爽,希望显示姓名,照片。修改源码,虽然费劲但是可以解决, 不利于后期的维护和扩展。为了扩展方便。新功能是不是新的电话具备呢?单独描 述单独封装。新电话也是电话中的一种。继承。直接获取父类中的功能。但是新电 话的来显功能已经变化了。需要重新定义。那么定义一个新功能合适吗?比如newShow,不合适,因为父类已经将来显功能定义完了,子类完全不需要重新定义 新功能。直接用就可以了。如果子类的来显功能内容不同。直需要保留来显功能, 定义子类的内容即可:这就是重写的应用!class NewPhone extends Phone{ String name; String picPath;//图片路径。void show() { //sop(“电话号码”);super.show();//如果还需要父类中原有的部分功能,可以通过super 调用。System.out.print(“姓名”+name);System.out.print(“照片”+picPath); }}【重写(覆盖)的注意事项】1,子类 覆盖父类,必须保证全要大于或者等于父类的权限。Fu: private void show(){} Zi:

类、方法、成员变量和局部变量的可用修饰符 !!!

类的修饰符整合 一.类 类的修饰符: Public:可以在其他任何类中使用,默认为统一包下的任意类。 Abstract:抽象类,不能被实例化,可以包含抽象方法,抽象方法没有被实现,无具体功能,只能衍生子类。 Final:不能被继承。

二.变量 变量修饰符: 一个类的成员变量的声明必须在类体中,而不能在方法中,方法中声明的是局部变量。 1. 可访问修饰符: 2. static:类变量:一个类所拥有的变量,不是类的每个实例有的变量。类变量是指不管类创建了多少对象,系统仅在第一次调用类的时候为类变量分配内存,所有对象共享该类的类变量,因此可以通过类本身或者某个对象来访问类变量。 3. final:常量。 4. volatile:声明一个可能同时被并存运行的几个线程所控制和修改的变量。 实例变量:和类变量对应,即每个对象都拥有各自独立的实例变量。 三.方法:(和变量对象分为实例方法和类方法,并用有无static修饰区别) 类方法:使用static关键字说明的方法 1.第一次调用含类方法的类是,系统只为该类创建一个版本,这个版本被该类和该类的所有实例共享。 2.类方法只能操作类变量,不能访问实例变量。类方法可以在类中被调用,不必创建实例来调用,当然也可以通过对象来调用。 实例方法:实例方法可以对当前对象的实例变量操作,而且可以访问类变量。 方法可以重载,要求:方法名相同,但是参数必须有区别。(参数不同可以使类型不同,顺序不同,个数不同) 方法的返回类型:若无返回类型,则声明为void. 方法中的变量作用域: 1. 成员变量:整个类。 2. 局部变量:定义起到方法块结束为止。 3. 方法参数:整个方法或者构造方法。 4. 异常处理参数:参数传递给异常处理方法。

Java主要修饰符的使用方法总结(周双)

Java中主要修饰符的使用(周双) 武汉理工大学计算机学院软件sy1001班周双(0121010680234) Java中定义了6个常用修饰符:public、protected、private、abstract、static、final。 访问控制符:公开级别:public;受保护级别:protected;默认级别:friendly (一般不指明);私有级别:private。类只能使用public和默认级别修饰。其中类的属性和方法可以使用上述4个访问修符;局部变量不可以使用访问修饰符;常用的方法是将类的属性设为private,而将类的方法设为public。 abstract修饰符:abstract修饰符可以用来修饰类和成员方法:用abstract修饰抽象类,表示该类不可以被实例化。相对应的则称为具体类。用abstract修饰的方法成为抽象方法,该方法没有方法体。抽象方法用来描述系统具有什么功能。 final 修饰符:final修饰符表示不可以改变的含义。final修饰符可以用来修饰类,成员方法,和成员变量。用final修饰类,表示该类不可以被继承;用final 修饰成员方法,表示该方法不可以被覆盖(override);用final修饰变量,表示一旦赋值就不可以被改变。注意,final变量必须被显式初始化。对于实例变量可以在定义时或在构造方法中进行初始化。而类变量(static变量)必须在定义时进行初始化。对于final修饰的引用类型,那么该变量在其生命周期中只能指向同一个对象,但可以改变对象的值。

Static修饰符:static成员变量表示静态变量,可以直接通过类名来访问。static 成员方法表示静态方法,可以直接通过类名来访问。由于static方法中,只可以访问静态变量和方法,所以要想访问一个实例变量或方法,则必须要先得到相应的对象的引用,才能访问其变量和方法。 一、类的修饰符 Java程序在定义类时,除恶额使用class关键字标识外,还可以在在class之前增加若干类的修饰符来修饰限定所定义的类的特性。类的修饰符分为访问控制符和非访问控制符两大类,下面主要讨论类的费访问控制符。 1.1抽象类 凡是用abstract修饰符修饰的类被称为抽象类。抽象类就是没有具体对象的概念类。比如电话卡有很多类型,磁卡、IC卡、IP卡、200卡、300卡、校园201卡。不同种类的卡有各自的特点,例如磁卡和IC卡没有卡号和密码;使用200卡每次通话要多扣除0.1元的附加费等。同时它们也拥有一些共同的特点,如每张卡都有剩余的金额,都有通话的功能。为此,可以定义一种集合了所有种类的电话卡的公共特点的抽象电话卡如下: Abstract class PhoneCard { double balance; void performDial() {

java成员变量和方法的public等访问限定符的访问权限

在学习java的过程中,我写类经常会用到public,private 和protected 的,我的基本经验就是一般类的成员变量都是用private,方法用public,类内部用的方法用protected,如果是存在子类的,那我就会把父类中的成员变量变为protected。(其余的看具体实际情况而定) 不过在一些公司的笔试题中,他们会要求你具体的写出像public这些访问限定符的作用域。其实,平常我都没去系统的考虑这些访问限定符的作用域,特别是包内包外的情况,OK,笔试不行了。 这是java基本的知识,也是公司看重的,那没办法啦,我的脑袋记不住东西,那我只能把这些东西写下来方便自己温故知新。 貌似默认(无)是friendly 如果你看到这里还不是很了解上面的表,或者是很久就没看书了,忘记了上面的表的内容的意义,那下面的例子就是帮助你温故知新的好东东。 例如,有一个包demo中的类P,它有一个private 成员变量data,一个public 默认构造方法,一个public 访问方法getData(),一个protected修改方法setData(),还有一个默认访问方式的辅助方法print()。 package demo; public class P{ private int data; public P(){ setData(0); } public int getData(){ return data;

} protected void setData(int v){ data = v; } void print(){ System.out.println("used!") } } 本类的不用说了,在本类里面才不管什么访问限定符呢。 如有类Q,扩展了P,所以可以调用P的默认构造方法、访问方法getData()和修改方法 setData()。但类Q不能直接访问P的成员变量data,辅助方法print()也不行(可以把默认,也就是没加任何访问限定符,理解为"包访问 ",在子类中不能直接访问,但在同包中的类却可以访问)。 import demo.P public class Q extends P{ public Q(){ super(); <---------------------------Q可以访问父类的默认构造方法 } public Q(int v){ setData(v); <------------------------Q可以访问父类的protected的方法 } public String toString(){ int v = getData(); <--------------------Q 可以访问父类的public的方法

java的四个修饰符

1. Java中的访问控制 表1-1 (1)在java中有public、protected、private三种显示的修饰符用于控制可见性,package不是显示的修饰符,它是隐含的,即如果在类、变量等前没加显示的可见性修饰符,那它就是package级别的。如果在类的定义中没有指定package,那么java会把它放在缺省包中,一般来说这个缺省的包就是当前目录。 (2)在子类中的方法如果重载了父类的方法,那么该方法的可见级别应更底或者相同,如父类中的方法是public,那么子类中方法必须是public。 (3)在java中,一般来说,变量成员最好是private,对它们的访问可以通过public的方法,在这些方法中可以做些控制以保证数据的一致性。这些方法名一般以get和set做为前缀。 2. 包 包名一般为小写,而类名的第一个字母一般为大写,这样在引用时,可以明显的分辨出包名和类名。如果在类的定义之前没有使用package定义包名,那么该类就属于缺省的包。 2.1 Hello Package 首先通过一个简单的package的定义来学习package的使用: package testPackage; public class Test { public static void main(String args[]) { mNode node = new mNode();

node.print("hello"); } } 说明: (1)使用package关键字指明类所在的包; (2)package语句必须在文件的最前面; (3)编译时可使用javac –d . Test.java自动产生包需要目录; (4)可以使用java testPackage.Test来执行编译后的代码; 2.2 包的几个作用: (1)可以更好的组织类,包与文件夹类似,文件夹可以将不同的文件放在同一个文件夹中,而包也可以将不同的类文件放在同一包中; (2)减少类名的冲突问题,这也与文件夹类似,同一文件夹中的文件不能重名,不同文件中的文件可以重名,同一包中的类名不能重复,不同包中的类名可以重复; (3)对包中的类起了一定的保护作用,详见java的访问控制; 2.3 import的使用 (1)直接引用指定的类,如import java.util.Vector; (2)引用一个包中的多个类,如import java.awt.*。更确切的说,它并不是引用java.awt 中的所有类,而只引用定义为public的类,并且只引用被代码引用的类,所以这种引用方法并不会降低程序的性能; (3)*号代替类名,在不能代替包名,如import java.awt.*,只引用java.awt下的类,而不引用java.awt下的包; (4)import java.awt.F*,这种使用方法是错误的; (5)import语句在所有类定义之前,在package定义之后; (6)import只告诉编译器及解释器哪里可以找到类、变量、方法的定义,而并没有将这些定义引入代码中; 2.4 包中类的使用 有以下几种机制可以使用包中的类: (1)如果要使用的类是属于https://www.doczj.com/doc/5c16546580.html,ng包的,那么可以直接使用类名来引用指定的类,而不需要加上包名,因为包https://www.doczj.com/doc/5c16546580.html,ng不用显示使用import,它是缺省引入的; (2)如果要使用的类在其它包(https://www.doczj.com/doc/5c16546580.html,ng除外)中,那么可以通过包名加上类名来引用该

final修饰符

Final修饰符 Final关键字可以修饰类、变量、和方法,用于表示它修饰的类、变量、方法不可改变。 1,final修饰成员变量 成员变量是随类的初始化或随对象的初始化而初始化。当类初始化时,系统会为该类的属性分配内存空间,并分配默认值,当初始化对象时,系统会为该对象的实例属性分配内存空间,并分配默认值。也就是说,当执行静态初始化块时,可以给该类的属性赋初始值,当执行普通初始化块、构造器时可对实例属性赋初始值。因此,成员变量的初始值可以在定义该变量时指定默认值,可以在初始化块、构造器中指定初始值,否则,成员变量的初始值将是由系统自动分配的初始值。 对于final修饰的成员变量而言,一旦有了初始值,就不能重新赋值,因此不可在普通方法中对成员变量重新赋值,成员变量只能在只能在定义该变量时指定默认值,或者在静态初始化块、初始化块、构造器中为成员变量指定初始值,如果即没有在定义该变量时指定初始值,也没有在初始化块,构造器中指定初始值,则改变量的值一直是0、false null 0.000 因此final修饰的类是属性,实例属性修改的地方归纳如下: 类属性:可在静态初始化快中,声明该属性时指定初始值。

实力属性:可在非静态初始化块、声明该属性、构造器中指定初始值。 2、final修饰的基本类型和引用类型变量的区别 Final修饰的基本类型变量时,不能对基本变量重新赋值,因此基本类型变量不能被改变。但对引用类型而言,它保存的仅仅是一个引用,final只保证这个引用的引用地址不会被改变,即一直引用同一对象,但这个对象完全可以改变。所以final 修饰的引用变量无法在编译时获取值,而是在运行时获取值。 3、final方法 Final修饰的方法为不可重写的方法。 对于一个private修饰的方法,因为它在当前类中可见,其子类无法访问该方法,所以子类无法重写该方法,如果子类中定义了一个与private方法相同名字、相同返回类型,相同的参数列表,也不是方法的重写,而是重新定义了一个新的方法。因此,即使使用final修饰的private的访问权限的方法,其子类依然可以定义一个与该方法具有相同的方法名、相同的参数列表、相同的返回类型。 4、final类 Final修饰的类不可有子类,不可继承

Java接口中成员变量和成员方法的介绍

接口类型的定义类似于类的定义。 接口定义的形式如下: [修饰符] interface 接口名[extends] [接口列表] { 接口体 } 像类那样,编译好的接口被保存在class 文件中。 1.接口说明 interface 前的修饰符是可选的。当没有修饰符的时候,表示此接口的访问只限于同包的 类。如果使用修饰符,则只能用public 修饰符,表示此接口是公有的,在任何地方都可以引用它,这一点和类是相同的。 接口说明中的extends 关键词和类说明中的extends 一样,用来定义直接的父接口。和类不同,一个接口可以继承多个父接口,当extends 后面有多个父接口时,它们之间用逗号隔开,例如,下面是一个最简单的接口说明:public interface boy extends person, man 2. 接口体就是用大括号括起来的那部分。接口体说明接口的成员,包括常量和抽象方法。 例3.11 接口的定义实例。 interface boy { final int MAX=50; void increment( ); void decrement( ); int currentcount( );

} 像类一样,接口可以有两种成员:成员变量和成员方法。 (1)接口中的成员变量 接口中所有的成员变量都隐含的是public、static、final 的,因此接口中的成员变量都是静态最终变量。在接口中成员变量声明的形式如下: [修饰符] 类型名变量名列表; 例如,在接口中有下面这行代码:“int i=5;”等同于:“public stat ic final int i=5;”。 (2)接口中的方法 接口中说明的方法都是抽象方法,其声明的形式为 [修饰符] 方法返回值类型方法名(参数列表); 由于接口中的方法都是抽象方法,所以方法体仅仅有一个分号“;”(连“{”和“}”都 没有)。修饰符可选,美国服务器租用商提醒您它只能是public 和abstract。接口中的所有方法都隐含的是public 和abstract 的,接口的方法不能是带static、final 等其他修饰符的。 3. 接口的实现 接口的声明仅仅给出了抽象方法,而具体地实现接口所定义的方法需要某个类为接口中 的每个抽象方法定义具体的操作。 在类的声明部分,用implements 关键字来声明这个类实现某个接口,一个类可以实现多个接口,在implements 子句中用逗号隔开。 如果实现某接口的类不是abstract 修饰的抽象类,则必须在类的定义部分实现指定接口

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.age 8./* 9.在静态方法中只能防问静态属性,但是可以通过一上的

Static成员变量,static成员函数解析 -电脑资料.

Static成员变量,static成员函数解析 -电脑资料 2019-01-01 最近看Effective C++经常看到一些和static相关的内容,希望综合整理一下,如果有不全,还望补充: 1 类中的Static成员变量 static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联! 一般为类申请一个对象,是对类中成员变量申请一个副本,各个对象之间的成员变量和函数互不影响,但是static成员变量不是在栈空间而是在静态存储区,所有的类对象共享static变量, 。静态成员是可以独立访问的,无需创建任何对象就可以访问 只是定义一个static变量,这个变量不能在类当中进行初始化,当然包括类的构造函数,static成员的初始化在类的外部进行。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中(在VS中也不报错)。 注:不要试图在头文件中定义(初始化)静态数据成员。在大多数的情况下,这样做会引起重复定义这样的错误。即使加上#ifndef #define #endif或者#pragma once也不行。 #include "static.h"#includeusing namespace std; class Person { private: string name; static int age; public: Person(const string&nm):name(nm) {} void Print() { cout<

C++中成员变量初始化有两种方式的区别

C++中成员变量初始化有两种方式的区别 构造函数初始化列表和构造函数体内赋值两种方式有何不同? 成员变量初始化的顺序是按照在类中定义的顺序。 1 内部数据类型(char,int……指针等) class Animal{ public: Animal(int weight,int height): //A初始化列表 m_weight(weight), m_height(height) { } Animal(int weight,int height) //B函数体内初始化 { m_weight = weight; m_height = height; } private: int m_weight; int m_height; }; 对于这些内部类型来说,基本上是没有区别的,效率上也不存在多大差异。当然A和B方式不能共存的。 2 无默认构造函数的继承关系中 class Animal{ public: Animal(int weight,int height): //没有提供无参的构造函数 m_weight(weight), m_height(height) { } private: int m_weight; int m_height; }; class Dog: public Animal{ public: Dog(int weight,int height,int type) //error 构造函数父类Animal无合适构造函数 { } private: int m_type; }; 这种必须在派生类中构造函数中初始化提供父类的初始化,因为对象构造的顺序是:

父类——子类——…… 所以必须: class Dog: public Animal{ public: Dog(int weight,int height,int type): Animal(weight,height) //必须使用初始化列表增加对父类的初始化{ ; } private: int m_type; }; 3 类中const常量,必须在初始化列表中初始,不能使用赋值的方式初始化 class Dog: public Animal{ public: Dog(int weight,int height,int type): Animal(weight,height), LEGS(4) //必须在初始化列表中初始化 { //LEGS = 4; //error } private: int m_type; const int LEGS; }; 4 包含有自定义数据类型(类)对象的成员初始化 class Food{ public: Food(int type = 10){ m_type = 10; } Food(Food &other) //拷贝构造函数 { m_type = other.m_type; } Food & operator =(Food &other) //重载赋值=函数 { m_type = other.m_type; return *this; } private: int m_type; }; (1)构造函数赋值方式初始化成员对象m_food

Java 默认修饰符 总结

Java 默认修饰符总结 1.类(class) 可见性修饰符:public—在所有类中可见,在其他包中可以用import导 入。 缺省—就是没有修饰符,在同一个包中的类中可见,在其他包中不能用 import导入。 修饰符:final—终态类,表示该类不能被继承 abstract—抽象类,不能新建对象 2.变量(variable) Java中变量有两种,方法变量和字段变量 方法变量只能用一个修饰符:final—表示常量,不能修改 下面是字段变量的修饰符 可见性修饰符:public—在任何类中可见 protected—在子类中或同一个包中可见 private—只在本类中可见,子类中也不可见 缺省—在同一个包中可见,子类不在一个包中,子类中也不可见 修饰符:static—静态变量,被类的所有实例共享 final—常量,定义后不能修改 *transient—告诉编译器,在类对象序列化的时候,此变量不需 要持久保存 *volatile—指出可能有多个线程修改此变量,要求编译器优化以 保证对此变量的修改能够被正确的处理 这两带*的不是很常用,但也是Java的修饰符,我也不是很清楚 3.方法(method) 可见性修饰符:public—在任何类中可见 protected—在子类中或同一个包中可见 private—只在本类中可见,子类中也不可见 缺省—在同一个包中可见,子类不在一个包中,子类中也不可见修饰符:static—静态方法,并不需要创建类的实例就可以访问静态方法final—常方法,所有子类不能覆盖该方法,但可以重载 abstract—抽象方法,在抽象类中没有实现的方法 native—本地方法,参见Java Native Interface(JNI) synchronized —在多线程中,synchronized方法调用时,其他所有方法不能调

类、对象、方法、变量、属性定义

类、对象、变量、方法及属性 (2007-05-22 00:15:34) 转载▼ 类:类是组成java程序的基本要素。类封装了一类对象的属性和方法。类是用来定义产生对象的模板。类的实现包括两部分:类声明和类体。 类体分为两部分:成员变量和局部变量。 1、成员变量和局部变更的类型可以是java中的任何一种数据类型.变量定义部分所定义的变更被称为类的成员变量,在方法体中定义的变量和方法的参数被称为局部变量。 2、成员变量在整个类内都有效,局部变量只在定义它的方法内有效。 3、成员变量又分为实例成员变量(实例变量)和类变量(静态变量)。、 4、如果局部变量的名字和成员变量的名字相同,则成员变量被隐藏,即这个成员变量在这个方法内暂时失效。 5、如果局部变量的名字和成员变量的名字相同,则成员变量被隐藏。这时如果想在该方法内使用成员变量,必须使用关键字this. 方法:一个类的类体由两部分组成:变量的定义和方法的定义。方法定义包括两部分:方法声明和方法体。例如:一个汽车的加速、减速、转弯、制动这些都是 该对象的方法。 方法重载:一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者参数个数不同,或者参数的类型不同。 构造方法:是一种特殊方法,它的名字必须与它所在的类的名字完全相同,而且没有类型,构造方法也可以重载。 类方法和实例方法 成员变量可分实例变量和类变量。类中的方法也分为实例方法和类方法。 1、对成员变量的操作只能放在方法中,方法可以对成员变量和方法体中自己定义的局部变量进行操作。 2、实例方法既能对类变量操作也能对实例变量操作,而类方法只能对类变量进行操作。 3、一个类中的方法可以互相调用,实例方法可以调用该类中的其他方法;类中的类方法只能调用该类的方法,不能调用实例方法。 对象:类是创建对象的模板。当使用一个类创建了一个对象时,也就是说给出了这个类的一个实例。“对象”其实我们并不陌生,天天都在和我们打交道,我们写字用的笔,骑的“宝马”等,太多了,世界万物,一切皆时对象! 属性:就是一个对象自用拥有的特性。例如:一辆汽车的颜色、重量、轮子数目、运行速度等这些都是该对象自身的属性。 好了,了解了概念还不行。还得自己再动手多写写代码。要学习java编程就必须学会怎样去编写类,怎么用java的语法去描述一类事物共有的属性和功能。属性通过变量来刻画,功能通过方法来体现,即方法操纵属性形成一定的算法来实现一个具体的功能。类把数据和对数据操作封装成一个整体。

相关主题
文本预览
相关文档 最新文档