static关键字的使用

static修饰变量与方法

一.static关键字的使用时机:如果类中的某个方法和当前对象无关就可以直接用他修饰

二.static 关键字的基本用法其实很简单,如下:
1.static修饰方法: public static final <返回类型> <>(方法名){}
这三个修饰符可以互换位置;
2.static修饰的变量保存在方法区中,且每个类中只能有一份,但是他修饰的方法是在栈中执行的
3.static修饰的方法可以直接用类名调用,同一个类中可以直接<方法名>.(); 不需要实例化
4.静态方法不能被重写,但是可以被继承
5.静态情况下只能访问静态的方法和变量,要想在静态方法中访问非静态方法需要实例化调用
6.可以通过实例化方法调用静态方法

三.static final 修饰的变量将会是一个常量,

1.static finfal int i=7//此时这个i是一个常量。就是7
2.static final 修饰的值必须初始化,除了上面那种外,还可以在静态代码块儿中初始化 public static final double d; static{ d=3.0 }

四.静态代码块
1.static{ }
2.静态代码块儿是在初始化代码块儿之前执行的,且值执行一次(同一个类中的同一事件)

这里主要介绍了static修饰的变量与方法在子类中的使用及其作用范围

public class Demo1 {
 public static void main(String[] args) {
  //向上引用造型
   fu f=new zi(); 
   f.ma();//输出:父类static 方法 

	  //实例化子类对象 
		 Zi z=new Zi();
			  System.out.println(z.i);//输出:(子类的变量i) 
			 System.out.println(((fu)z).i);//输出:(继承自父类的变量i)i 
		  z.ma();//如果直接调用,调用的是static修饰的子类的ma() 方法 ((fu)z).ma();//只有强转之后,调用的才是父类static修饰的ma()方法
    
  
     z.m(); }}




//父类 class fu{
 static int i=10; 
 public fu() { 	
  } 
  public static void ma() { 	
  System.out.println("父类static 的ma方法"); 	 } }





 //子类 
    class Zi{
     /*public Zi() { 	
     super.i=12;//修改父类i的值 	
     this.i=5;//修改子类变量i的值
      	}*/
    
    
    public static void m() { 
    	System.out.println("子类的static 方法m"); 	
    	//System.out.println(i); 
    	} public static void ma() { 	
    	System.out.println("子类的static 方法ma");
    	 }}

你可能感兴趣的:(java基础知识)