static修饰符能修饰内部类,方法,变量,代码块。
静态 成员意味着该成员属于类级,而不依赖于类的实例,也不依赖于任何一个类的成员,可以不通过创建类的实例来使用静态成员。
静态变量在类被加载入时初始化,一个类只有一个静态变量的内存空间,而不会依赖于对象再次分配空间。局部变量不能被声明为静态变量。
静态方法只能访问静态变量(静态方法没有this变量)。静态方法只能被重写成静态的,不能被重写成非静态的。非静态方法不能重写成静态的。
例子:
以下为没有使用静态方法的:
public class d
{
public static void main(String args[])
{
Child c=new Child();
c.doStuff();
Parent p=new Parent();
p.doStuff();
p=c;
p.doStuff();
Parent a=new Child();
a.doStuff();
a.x=11;
a.doStuff();
p.doStuff();
Parent b=new Parent();
b.doStuff();
}
}
class Parent
{
Parent(){System.out.println("Parent init~~~");}
int x=100;
public void doStuff()
{
System.out.println("Parent~!~!~");
System.out.println(x);
}
}
class Child extends Parent
{
Child(){System.out.println("Child init~~~");}
int x=200;
public void doStuff()
{
System.out.println("Child~!~!~");
System.out.println(x);
}
}
输出结果为:
Parent init~~~
Child init~~~
Child~!~!~
200
Parent init~~~
Parent~!~!~
100
Child~!~!~
200
Parent init~~~
Child init~~~
Child~!~!~
200
Child~!~!~
200
Child~!~!~
200
Parent init~~~
Parent~!~!~
100
而当使用静态方法时:
public class d
{
public static void main(String args[])
{
Child c=new Child();
c.doStuff();
Parent p=new Parent();
p.doStuff();
p=c;
p.doStuff();
Parent a=new Child();
a.doStuff();
a.x=11;
a.doStuff();
p.doStuff();
Parent b=new Parent();
b.doStuff();
}
}
class Parent
{
Parent(){System.out.println("Parent init~~~");}
static int x=100;
public static void doStuff()
{
System.out.println("Parent~!~!~");
System.out.println(x);
}
}
class Child extends Parent
{
Child(){System.out.println("Child init~~~");}
static int x=200;
public static void doStuff()
{
System.out.println("Child~!~!~");
System.out.println(x);
}
}
输出结果为:
Parent init~~~
Child init~~~
Child~!~!~
200
Parent init~~~
Parent~!~!~
100
Parent~!~!~
100
Parent init~~~
Child init~~~
Parent~!~!~
100
Parent~!~!~
11
Parent~!~!~
11
Parent init~~~
Parent~!~!~
11
分享到:
相关推荐
也是通过查阅网上资料,初略的整理了一下,(包含了final、static、abstract和访问修饰符public、protect、default、private)写成规范文档希望对有需要的提供些帮助
先看下面的例子,它将告诉我们在JS世界中也有C#里的public , private ,及static等
static:修饰符:修饰变量,函数。作用域:变量仅仅在本文件可见,函数在本文件可以被调用。static在函数内部定义的话,分配在堆中,数值保存在data段,而不是在栈中,而且只赋值一次。 extern:修饰符:修饰变量,...
auto、register、static、extern等存储类修饰符的区别.
static修饰符用于声明静态变量或静态成员函数。 1. 静态变量 静态变量的作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,可以被修改。 2. 函数内部的静态变量 函数内部的静态变量...
本文主要给大家介绍了关于c++中static修饰符的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 下面一段是引用自effective c++ 中的一句话: 所谓的static对象,其寿命是从构造出来到...
C#修饰符 C#语言中,修饰符是用来定义类、方法、属性、字段等成员的访问权限、行为和特性的关键字。...通过学习C#和Java语言中的修饰符,我们可以更好地理解和使用这些关键字,从而编写更加高效、安全、灵活的程序。
static final 包 权限修饰符 内部类 的思维导图
一、关于staticstatic 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因、作用谈起,全面分析static 修饰符的实质。 static 的两大作用: 一、控制存储方式 static...
以下是对Java修饰符abstract,static,final的区别进行了详细的介绍,需要的朋友可以过来参考下
JAVA访问修饰符
本篇文章是对php变量修饰符static的使用进行了详细的分析介绍,需要的朋友参考下
多个修饰符可以一起使用,组件所表现的特性也会根据修饰符的数量不断叠加。 abstract可以修饰什么? 可以修饰类、方法,被修饰的类称之为抽象类,被修饰的方法称之为抽象方法 抽象类如何定义? 在class关键字前添加 ...
主要介绍了Java编程中protected关键字与static关键字的作用,是Java入门学习中的基础知识,需要的朋友可以参考下
使用 static 修饰符声明的字段定义了一个静态字段 (static field)。一个静态字段只标识一个存储位置。无论对一个类创建多少个实例,它的静态字段永远都只有一个副本。 不使用 static 修饰符声明的字段定义了一个...
const,extern,static,volatile的使用
例如,下面是一个使用 static 修饰符修饰的变量: public class MyClass { public static int myVariable; } 在上面的示例中,myVariable 变量是一个类变量,它属于 MyClass 类而不是实例。 Java 中的访问修饰符...
java代码-日常练习32 静态修饰符 static 修饰:类 类的成员(变量及方法)