static关键字:可以用于修饰属性,也可以用于修饰方法,还可以用于修饰类
static修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量;一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量值也会随之发生变化,如果一个成员变量是static的,那么我们可以通过类名.成员变量名来的方式来使用它(Java推荐使用这种方式)
package com.yuanzijian01;
class MyStatic{
static int a;
}
public class StaticTest {
public static void main(String[] args) {
// TODO 自动生成的方法存根
/*
MyStatic myStatic = new MyStatic();
MyStatic myStatic2 = new MyStatic();
myStatic.a = 10;
System.out.println(myStatic2.a);
*/
//java 推荐使用的方式
MyStatic myStatic = new MyStatic();
MyStatic.a = 10;
System.out.println(myStatic.a);
}
}3.static修饰方法:static修饰的方法叫做静态方法。对于静态方法来说,可以使用类名.方法名来访问
package com.yuanzijian02;
class MyStatic2{
public static void output(){
System.out.println("output");
}
}
public class StaticTest2 {
public static void main(String[] args) {
MyStatic2 myStatic = new MyStatic2();
MyStatic2.output();
}
}package com.yuanzijain03;
class M{
public static void output(){
System.out.println("M");
}
}
class N extends M{
public static void output(){
System.out.println("N");
}
}
public class StaticTest3 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
M m = new N();
extracted(m);
}
private static void extracted(M m) {
M.output();
}
}4.静态方法只能继承,不能重写(Override)
注意:只要有静态,就不要覆盖
5.final关键字:final可以修饰属性,方法,类
6.final修饰类:当一个类被final修饰时,表示该类是一个终态类,既不能被继承
final class E{ //表示该类不能被继承
}
class F extends E{ //提示错误。E是终态类,不能被继承
}
public class FinalTest {
public static void main(String[] args) {
// TODO 自动生成的方法存根
F f = new F();
}
}7.final修饰方法:当一个方法被final修饰时,该方法是一个终态方法,即不能被重写
package com.yuanzijian05;
class G{
public final void output(){
System.out.println("G");
}
}
class H extends G{ //此行的多个标记, - 不能覆盖 G 中的终态方法, - 覆盖
public void output(){
System.out.println("H");
}
}
public class FinalTest2 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
H h = new H();
h.output();
}
}8.final修饰属性:当一个属性被修饰时候,也不能被重写
package com.yuanzijian06;
class People{
final int age = 10;
}
public class FinalTest {
public static void main(String[] args) {
People people = new People();
people.age = 20; // 不能对终态字段 People.age 赋值
}
}9.当final修饰一个原生数据类型时,表示该原生数据类型的值不能发生变化,如果final修饰一个引用类型时,表示该引用类型不能指向其他对象了,但是该引用所指向的对象的内容是可以发生变化的
原文地址:http://hnyuanzijian.blog.51cto.com/8869344/1774512