A) 用static(静态)修饰属性:一个类生成了N个对象,这些对象会共同使用一份静态的成员变量。一个对象对这个成员变量进行修改,其他对象的该成员变量的值也会随之变化。

B) 我们可以通过 类名.成员变量名  来调用这个静态成员变量。

C)static修饰方法: static修饰的方法叫静态犯法。 可以使用 类名.方法名 来调用。

D)静态方法只能继承,不能重写。(子类的静态方法不能覆盖父类的方法,父类的静态方法不能覆盖子类的方法,想要继承,必须都为静态方法)

例:

 public class Animal
{
public static void testMethod()
{
System.out.println("The class method in Animal.");
} public void testInstanceMethod()
{
System.out.println("The instance method in Animal.");
} } public class Cat extends Animal
{
public static void testMethod()
{
System.out.println("The class method in Cat.");
} public void testInstanceMethod()
{
System.out.println("The instance method in Cat.");
} public static void main (String[] args)
{
Cat myCat = new Cat();
Animal myAnimal = myCat;
Animal.testMethod();
myAnimal.testInstanceMethod();
}
}

输出的结果为:

The instance method in Animal.
The instance method in Cat.

---------------------------------------------
--------------------------------------------- A)final关键字可以修饰属性,方法,类。 B)final修饰类:一个被final修饰的类时一个终态类,不能被继承。 C)final修饰方法: 一个被final修饰的方法时一个终态方法,不能被重写。 D)final修饰属性:当一个属性被final修饰,这个属性的值不能被改写。 E)当final修饰一个原生数据类型,该原生数据类型的值不能发生变化;当final修饰一个引用类型时,表示该引用类型不能指向别的对象了,但是该对象的内容是可以发生变化的。 F)对于final类型的成员变量,一般有两种赋初值的方法:
a. 在声明final类型的成员变量时就为其赋上初值。
b. 在声明时不赋值,但在类的所有构造方法中都为其赋上初值。 G)static代码块:静态代码块。静态代码块的作用也是完成一些初始化工作。首先执行静态代码块,然后执行构造方法。静态代码块在类被加载的时候执行,而构造方法是在生成对象时执行;想要调用某个类来生成对象,首先需要将类加载到Java的虚拟机上(JVM),然后有JNM加载这个类来生成对象。 H)类的静态代码块只会执行一次,在类被加载的时候执行的,因为每个类只会加载一次,所以静态代码块只会被执行一次;而构造方法不同,每次生成一个对象时都会调用类的构造方法,所以new一次就会调用构造方法一次。 I)如果继承体系中既有构造方法也有静态代码块,那么首先执行最顶层的类静态代码块,一直执行到最底层类的静态代码块,然后再去执行最顶层类的构造方法,一直执行到最底层类的构造方法。注意:静态代码块只会执行一次。
例子:
 public class StaticTest
{
public static void main(String[] args)
{
new R();
new R();
}
} class P
{
static
{
System.out.println("P static block");
} public P()
{
System.out.println("P constructor");
}
} class Q extends P
{
static
{
System.out.println("Q static block");
} public Q()
{
System.out.println("Q constructor");
}
} class R extends Q
{
static
{
System.out.println("R static block");
} public R()
{
System.out.println("R constructor");
}
}

输出的结果为:

P static block
Q static block
R static block
P constructor
Q constructor
R constructor
P constructor
Q constructor
R constructor

J)不能再静态的方法中访问非静态的成员变量;可以在静态方法中访问静态的成员变量。可以在非静态的方法中访问静态的成员变量。

K)不能再静态的方法中使用this关键字

总结:静态的只能访问静态的;非静态的可以访问一切。

L)一个类不能既是final,又是abstract的。因为abstract的主要目的是定义一种约定,让子类去实现这种约定,必然需要被继承。而final修饰后不能不继承,这样是不允许的。

static 与 final 修饰符的更多相关文章

  1. JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配

    Java栈与堆 堆:顺序随意 栈:后进先出(Last-in/First-Out). Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.anewarray和mu ...

  2. java中static和final修饰符

    static和final修饰符 一.static修饰符 static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. ...

  3. static、final修饰符、内部类

    static修饰符: static修饰符能够与属性.方法和内部类一起使用,表示静态的.类中的静态变量和静态方法能够与类名一起使用.不须要创建一个类的对象来訪问该类的静态成员. class Static ...

  4. Java中static、final修饰符、对常量变量的总结

    static static属性 定义:static修饰的属性就叫静态属性:如果类的某个属性,不管创建多少个对象,属性的存储空间只有唯一的一个,那么这个属性就应该用static修饰 作用:static属 ...

  5. private static final 修饰符

    java修饰符分类修饰符字段修饰符方法修饰符根据功能同主要分下几种 1.权限访问修饰符 public,protected,default,private,四种级别修饰符都用来修饰类.方法和字段 包外 ...

  6. 类成员(static)和final修饰符

    在Java类里只能包含成员变量.方法.构造器.初始化块.内部类(包括接口.枚举)5种成员,类成员是用static来修饰的,其属于整个类. 当使用实例来访问类成员时,实际上依然是委托给该类来访问类成员, ...

  7. Java final 修饰符知识点总结

    final从字面上理解含义为“最后的,最终的”.在Java中也同样表示出此种含义. final可以用来修饰变量(包括类属性.对象属性.局部变量和形参).方法(包括类方法和对象方法)和类. 1. fin ...

  8. Java中的final修饰符

    1.什么时候可以选择final修饰符 如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰. 2.用final修饰的类 首先大家要明白,用final修饰的类是不能被继承的, ...

  9. 对于形式参数只能用final修饰符,其它任何修饰符都会引起编译器错误

    在Java中修饰符总共有一下几种: 1.访问控制修饰符    分别有:public private protected,缺省 2.其它修饰符      分别有:abstract,final,stati ...

随机推荐

  1. c/c++笔记

    string 若要根据字典序比较string类型的大小,只需要用><=就可以啦 例如: string s1="abcz"; string s2="abcd&q ...

  2. 如何去掉有背景图的a标签的边框

    有两种情况: 1.<a href="#" style="background:url(../images/download.png);"></ ...

  3. Java基础学习(学习IT企业必读的324个JAVA面试题.pdf 整理)

    一.Java程序基础 javac 文件名.java    编译程序 java 类名               运行java程序 代码规范中,一下几点要注意: 包名:包名是全小写的名词,中间可以由点分 ...

  4. 华为OJ平台——24点游戏

    题目描述: 给出4个1-10的数字,通过加减乘除,得到数字为24就算胜利 输入: 4个1-10的数字.[数字允许重复,测试用例保证无异常数字]输出: true or false 思路:

  5. android style 中一些颜色的定义

    colorControlNormal 单选多选等控件颜色 colorControlActivated 单选多选等控件激活颜色

  6. Android fragment 想activity 传送数据

    fragment可以通过定义 fragment的接口的方法来 想activity传送数据: 而activity则是通过实现 fragment的接口来接收fragment的送来的数据: 1.在fragm ...

  7. ios9和ios10的新特性

    昨天面试了一个做ios开发的公司,其中面试官问我最新的ios系统版本是多少,以及它的特性是什么?由于自己是初学者,所以对这些没有关注过.今天特地搜索了一下关于ios9和ios10的新特性,并整理了一下 ...

  8. 【转】DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例)

    这两天正在学习FPGA如何控制DDR3的读写,找到一篇个人感觉比较有意义的文章,可以对DDR的内部结构有一个初步的了解.原文出处:http://blog.chinaunix.net/uid-28458 ...

  9. js 获取当前日期时间 格式为 yyyy-mm-dd hh:MM:ss

    ------------------------------------------------------------------------------------ js 获取当前日期时间 格式为 ...

  10. Unity Js与C#脚本通信

    将.js文件放到Standard Assets目录下,否则无法编译通过 CS_test.cs : using UnityEngine; using System.Collections;   publ ...