海阔天空

当前时间为:
欢迎大家来到海阔天空https://www.9713job.com,广告合作以及淘宝商家推广请微信联系15357240395

2020java教程:面向对象的三个修饰符之static

未分类
2020-08-13 10:08:41
1822677238@qq.com

手机扫码查看

2020java教程:面向对象的三个修饰符之static

面向对象的三个修饰符之static

实例属性

public class demos{
    public static void main(String[] args) {
        MyClass mc1=new MyClass();
        mc1.a=10;
        MyClass mc2=new MyClass();
        mc2.a=20;
        System.out.println(mc1.a+"\t"+mc2.a);
        //运行结果 10   20


    }
}
class MyClass{
    int a;//实例属性
    //实例属性是每个对象各自持有的独立空间(多份),对象单方面修改,不会影响其他对象。
}

 

静态属性

public class demos{
    public static void main(String[] args) {
        MyClass mc1=new MyClass();
        mc1.a=10;
        MyClass mc2=new MyClass();
        mc2.a=20;
        System.out.println(mc1.a+"\t"+mc2.a);
        //运行结果 20   20
    }
}
class MyClass{
    static int a;//静态属性
    /*
      静态属性是整个类共同持有的共享空间
      只有一份,任何对象修改,都会影响其他对象
     */
}

什么是静态

概念:
1.静态static可以修饰属性和方法
2.称为静态属性(类属性)、静态方法(类方法)
3.静态成员是全类所有对象共享的成员
4.在全类中只有一份,不因创建多个对象而产生多份
5.不必创建对象,可直接通过类名访问

public class demos{
    public static void main(String[] args) {
        MyClass mc1=new MyClass();
        MyClass mc2=new MyClass();
        mc1.a=10;
        mc2.a=20;
        mc1.b=100;//自动转换成 MyClass.b
        mc2.b=200;
        System.out.println(mc1.a+"\t"+mc2.a);
        //运行结果 10   20
        //静态成员通过类名访问  [类名.属性名]
        System.out.println(MyClass.b+"\t"+MyClass.b);
    }
}
class MyClass{
    int a;
    static int b;//静态属性
}

静态方法

public class demos{
    public static void main(String[] args) {
        MyClass.method1();
        //在其他类中,通过 [类名.静态方法名] 访问
    }
}
class MyClass{
    // static 静态方法
    public static void method1(){
        System.out.println("MyClass static method1()");
        //在本类中,通过 [静态方法名] 访问
        method2();
    }
    // static 静态方法
    public static void method2(){
        System.out.println("MyClass static method2()");
    }
}

java中的方法调用,分为两种
1.静态分派
静态方法中,允许参数列表不同的重名方法,指静态方法之间的重载
2.动态分派
在具有继承关系的情况下,调用实例方法时,自低向上查找可用方法版本,指实例方法的覆盖

java虚拟机方法调用指令
1.invokespacial 私有方法 ,构造方法
2.invokeinterface 调用接口方法
3.invokestatic 调用静态
4.invokevirtual 调用虚方法(父类定义的,日后被子类覆盖的方法)
5.invokedynamic 调用动态链接方法

静态方法允许直接访问静态成员
静态方法不能直接访问非静态成员
静态方法中不允许使用this或super关键字
静态方法可以继承,不能覆盖,没有多态

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注