zoukankan      html  css  js  c++  java
  • 静态方法和非静态方法的区别

    静态方法static(类方法)和 非静态方法(实例方法)的区别:

    方法我们主要分为三种:
    1.构造方法
    2.非静态方法(普通方法/实例方法)
    3.静态方法(类方法)

    对于1(补充一下):构造方法分为无参构造方法 和 有参构造方法。另外
    这两个方法,涉及到了方法重载(小伙伴可以自己去了解方法重载、方法重写、方法重构区别,当然我其他文章也会写相关的介绍)。

    一、静态方法和非静态方法的区别(调用对象、引用变量不同)
    对于2:静态方法,是使用static关键字修饰的方法,又叫类方法。属于类的,不属于对象,在实例化对象之前就可以通过类名.方法名调用静态方法。(静态属性,静态方法都是属于类的,可以直接通过类名调用)。
    A.在静态方法中,可以调用静态方法。
    B.在静态方法中,不能调用非静态方法。
    C.在静态方法中,可以引用类变量(即,static修饰的变量)。
    D.在静态方法中,不能引用成员变量(即,没有static修饰的变量)。
    E.在静态方法中,不能使用super和this关键字

    对于3:非静态方法,是不含有static关键字修饰的普通方法,又称为实例方法,成员方法。属于对象的,不属于类的。(成员属性,成员方法是属于对象的,必须通过new关键字创建对象后,再通过对象调用)。
    A.在普通方法中,可以调用普通方法。
    B.在普通方法中,可以调用静态方法
    C.在普通方法中,可以引用类变量和成员变量
    D.在普通方法中,可以使用super和this关键字

    二、静态方法和非静态方法的区别(调用方法不同)
    静态方法可以直接调用,类名调用和对象调用。(类名.方法名 / 对象名.方法名)
    但是非静态方法只能通过对象调用。(对象名.方法名)

    三、静态方法和非静态方法的区别(生命周期不同)
    静态方法的生命周期跟相应的类一样长,静态方法和静态变量会随着类的定义而被分配和装载入内存中。一直到线程结束,静态属性和方法才会被销毁。(也就是静态方法属于类)
    非静态方法的生命周期和类的实例化对象一样长,只有当类实例化了一个对象,非静态方法才会被创建,而当这个对象被销毁时,非静态方法也马上被销毁。(也就是非静态方法属于对象)

    总结:类方法可以直接通过类名调用,实例方法必需先实例化类,再初始化对象,然后通过类的实例对象才能调用

    举例:

    class ABC{
    
     public static void testStatic(){
    	 System.out.println("This is static method");
     }
     public void testMethod(){
     	 System.out.println("This is instance method");
     }
    
     public static void main(String[] str){
          ABC.testStatic();         //直接通过类调用
      ABC a = new ABC();        //实例化,然后构造方法会初始化
      a.testMethod();           //对象调用方法
      }
    

    --- 借鉴于https://blog.csdn.net/SeniorShen/article/details/100058364

  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 交换Easy
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法提高 多项式输出
    Java实现 蓝桥杯VIP 算法训练 矩阵乘方
    QT中给各控件增加背景图片(可缩放可旋转)的几种方法
    回调函数实现类似QT中信号机制
    std::string的Copy-on-Write:不如想象中美好(VC不使用这种方式,而使用对小字符串更友好的SSO实现)
  • 原文地址:https://www.cnblogs.com/anke-z/p/13550645.html
Copyright © 2011-2022 走看看