黑马程序员_static(静态)详解
来源:互联网 发布:ubuntu安装图形化界面 编辑:程序博客网 时间:2024/06/06 21:26
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
1、static关键字的由来
当有多个对象共享同一个属性,可以使用静态。
可以用于修饰属性,也可以用于修饰方法,还可以用于修饰类。
2、static 修饰属性:无论一个类生成了多少个对象,所有这些对象共同使用唯一一份静态的成员变量;一个对象对该静态成员变量进行了修改,其他对象的该静态成员变量的值也会随之发生变化。
如果一个成员变量是static 的,那么我们可以通过 类名 .成员变量名 成员变量名 成员变量名 的方式来使用它 的方式来使用它 (推荐使用这种方式) 。
class Demo {public static void main(String[] args) {/* * 创建两个对象,在对象f里面对num重新赋值 * 输出结果都为重新赋值的那个值 */F f = new F();f.num = 15;System.out.println(f.num);F f1 = new F();System.out.println(F.num);//用类名.成员变量名 调用成员变量}}class F {static int num = 10; public void getNum() { }}
3、static修饰方法: static 修饰的方法叫做静态。 对于静态方法来说,可以 使用 类名 .方法名的方式来访问。
class Demo {public static void main(String[] args) {F.getNum();//直接使用类名.方法名 调用方法}}class F { public static void getNum() {System.out.println("helloWorld"); }}
4、静态方法只能继承,不能被重写
如果父类中有一个静态的方法,子类也有一个与其方法名,参数类型,参数个数都一样的方法,并且也有static关键字修饰,那么该子类的方法会把原来继承过来的父类的方法隐藏,而不是重写。通俗的讲就是父类的方法和子类的方法是两个没有关系的方法,具体调用哪一个方法是看是哪个对象的引用;这种父子类方法也不在存在多态的性质。
例如:
class Demo {public static void main(String[] args) {F f = new F();f.getNum();//结果为helloWorldZ z = new Z();z.getNum();//结果为HelloF f1 = new Z();f1.getNum();//结果为helloWorld}}class F { public static void getNum() {System.out.println("helloWorld"); }}class Z extends F { public static void getNum() {System.out.println("Hello"); } }总之,静态的没有重写!!!
5、不能在静态方法中访问非静态成员变量;
代码演示:
class Demo {public static void main(String[] args) {F f = new F();f.getNum();}}class F {int age = 10;//错误: 无法从静态上下文中引用非静态变量 age public static void getNum() {System.out.println( age ); }}
一般情况下是不可以用static修饰类的。如果一定要用static修饰类的话,通常static修饰的是匿名内部类。
在一个类中创建另外一个类,叫做成员内部类。这个成员内部类可以静态的(利用static关键字修饰),也可以是非静态的。由于静态的内部类在定义、使用的时候会有种种的限制。所以在实际工作中用到的并不多。
在开发过程中,内部类中使用的最多的还是非静态地成员内部类。不过在特定的情况下,静态内部类也能够发挥其独特的作用。
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
详细请查看:www.itheima.com
- 黑马程序员_static(静态)详解
- 黑马程序员_static静态
- 黑马程序员_static 关键字
- 黑马程序员_static关键字
- 黑马程序员_static关键字总结
- 黑马程序员_static和final关键字
- 黑马程序员_面向对象_static
- 黑马程序员_Java基础[9]_static
- 黑马程序员_笔记十三_static关键字
- 黑马程序员——基础知识总结_static
- 黑马程序员--Java学习日记7_static的应用
- 黑马程序员_static关键字和构造代码块
- 黑马程序员——面向对象_static关键字
- 黑马程序员_07_static_main_工具类_static代码块_单例模式
- 黑马程序员---static 静态
- 黑马程序员—静态
- 黑马程序员_java_静态
- 黑马程序员__静态
- 第2次实验——算法基本功 与 综合思考
- 软件设计模式之单例模式(JAVA实现)
- Content is not allowed in trailing section
- C/C++学习之模板
- 每个程序员都应该了解的 CPU 高速缓存 英文原文:Memory part 2: CPU caches
- 黑马程序员_static(静态)详解
- redis的 rdb 和 aof 持久化的区别
- 判断两条线段是否相交(三种算法)
- jabber协议详解
- 使用state模式构建comparator,并使用factory模式创建comparator
- UI 创建一个view对象
- LeetCode OJ - Valid Palindrome
- Mac交叉编译
- 三次产业划分