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++历史(The History of C++)

    C++历史 早期C++ •1979: 首次实现引入类的C(C with Classes first implemented) 1.新特性:类.成员函数.继承类.独立编译.公共和私有访问控制.友元.函数 ...

  2. multi2sim,booksim简介

    booksim是周期精确互连网络仿真器,设计用来配合"Principles and Practices of Interconnection Networks"课程教学,仿真器采用 ...

  3. 循环链表Josephus问题(c,cpp)

    问题描述: 设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m个的人出列,然后从出列的下一个人重新开始报数,数到第m个的人又出列,.......,如此反复直到所有的人出列为止. Joseph ...

  4. LA3027 合作网络-并查集压缩路径

    有N个结点 一次 I u v 操作表示把结点u的父结点设为v,距离为|u-v|%1000.输入保证执行指令前u没有父结点 一次E u 操作表示询问u到根结点的距离 O操作表示结束 #include&l ...

  5. eclipse打开出错 Error: opening registry key 'Software\JavaSoft\Java Runtime Environment'

    eclipse出现注册错误:①在“打开”输入框中输入“regedit”命令,删除注册表的HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\  的INSTALLDIR删除. 或者 ...

  6. linux 内存使用

    # df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 50G 1.9G 45G 5% / tmpfs 1.9G 0 1.9G 0% ...

  7. 轻松找回Win7桌面“消失”的IE9图标

    打开注册表编辑器(Win+R打开运行窗口,运行regedit命令),依次展开到 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion ...

  8. Volume serial number could associate file existence on certain volume

    When it comes to lnk file analysis, we should put more emphasis on the volume serial number. It coul ...

  9. 当局部变量遇上全局变量——extern及花括号用法举例

    请阅读以下代码并说出它的输出结果. #include <stdio.h> ; int foo() { ; { extern int val; printf("val_foo = ...

  10. 学习iOS的博客推荐

    1.取精华.去糟粕!适合iOS开发者的15大网站推荐 http://www.csdn.net/article/2015-03-04/2824108-ios-developers-sites