JAVA中类和对象的初认识(3)浅谈static

static修饰符:

静态变量:static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。 静态变量也被称为类变量。局部变量不能被声明为 static 变量。(源自:Java 修饰符 | 菜鸟教程 (runoob.com)

特点:

1.不属于某个具体对象,是所有对象所共享的,是类的一种属性。

2.既可以通过对象访问,也可以通过类名访问

3.存储在堆区,该类被卸载时给其分配的空间才会被回收。

4.生命周期于类同步

(更推荐使用类名调用,静态方法相同)

静态成员变量,一般不在构造方法中初始化,构造方法是与对象相关的实例属性,静态成员变量初始化一般为 一 、就地初始化即定义时直接给出初始值 二、在静态代码块中初始化

静态方法: static 关键字用来声明独立于对象的静态方法。静态方法不能使用类的非静态变量。静态方法从参数列表得到数据,然后计算这些数据(源自:Java 修饰符 | 菜鸟教程 (runoob.com)

1.不属于某个具体的对象

2.可以通过对象调用,也可以通过类名调用。

3.静态方法中无 this 引用参数。不能访问任何非静态成员变量和任何非静态成员方法。

静态方法 斜体 显示 ,同样的静态方法也像类的属性一般。静态方法属于类,在编译类时已经被分配到内存的堆区的方法区中,而类的非静态方法却是属于对象的,每个对象都可以引用,若方法被重写,则引用子类重写的,这是运行时创建的,

(方法被加载时的顺序,一个方法被调用时,JVM首先检查是否为类方法,若是在类中找到并调用,不在确定是否被重写,若不是,正在执行其他操作)

而静态方法是不可以被重写但可以重载的,而是隐藏,若一个子类中定义了一个于父类静态方法中相同的方法,即方法名、返回值类型、参数名相同,则该类隐藏了父类的这个方法,静态方法看似被重写,实则是隐藏。

而其中子类若写一个非静态同名方法无法覆盖父类的静态方法,反过来也如此,父类中的方法是非静态的,子类不能写一个静态的同名方法,即静态不可覆盖,要么父子全静态,要么父子全非静态。

class A{
    public static int a;
    public A(){

    }
    public static void show(){
        System.out.println("A:隐藏而非重写");
    }

 public static void show(int b){
        System.out.println("A:可重载不可重写");
    }



}
public class Demo1 extends A{

    public Demo1() {

    }
    public static void show(){
        System.out.println("Demo1:隐藏而非重写");
    }

 public static void show(int b,int c) {
        System.out.println("Demo1:可重载不可重写");
    }



    public static void main(String[] args) {
        Demo1 demo1 =new Demo1();
        demo1.show();//没有重写时调用的时A的静态方法;
        Demo1.show();//没有重写时调用的时A的静态方法;
        Demo1.show(1,2);
        A.show(1);
       // A demo2 = new Demo1();
        // demo2.show(1,2);
        // demo2.show();
    }
}

 静态代码块:一般用于初始化静态成员变量

1.静态代码块不管生成多少个对象,只执行一次

2.如果一个类含有多个静态代码块,在编译时,编译器会按照先后次序依次合并在一个方法中,在类加载时被调用,并且只会执行一次。

指正,点赞 即加电子功德,  谢  谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值