• 构造方法,super,final,static


    构造方法的概念:

          执行这个方法的时候给对象进行属性赋值。(构造方法里的内容一般都是给成员变量赋值,没有其他的操作了)

          格式:

          修饰符   构造方法名(参数列表){

                        }  

          体现:

            1:没有返回值类型,也没有返回值,因为他是为构建对象的,对象创建完,方法就执行结束。

            2:构造方法名称必须和类名保持一致。

    构造方法的特点:
            1:构造方法可以重载2:当类中1个构造方法都没有的时候,系统会默认给你一个空参构造方法。只要这个类中有一个构造方法了,就不会默认有空参构造。
            2:一个对象只能调用一次构造方法。

            3:对象创建后需要用set方法给成员变量赋值。
            this.是来解决成员变量和局部变量重名问题,this()是用于构造方法之间的调用。有参构造方法,this()必须放在第一行
            4:一个类中可以有多个构造方法,是以重载的形式存在的。
            5:当有一个有参构造方法时,如果想要有一个空参构造方法,就必须自己写一个。

            6:构造方法可以被private修饰,则其他程序无法创建该类的对象。

    构造方法的内存图解:

          main方法进栈执行,new后面是构造方法,找到构造方法后,成员变量进堆,赋初始值,构造方法的实参给形参赋值,堆里面的值改变,this调用之后,值发生改变。构造方法消失,赋地址值,创建的对象调用。

     

    super():(目的是代码复用)

        1:调用父类构造方法。

        2:super能出现在实例(对象)方法中和构造方法中。

        3:super()只能出现在第一行。

        4:在所有构造方法第一行,如果没有显示调用父类构造,默认添加一个super()。

    final:    

        1:被final修饰的类叫太监类,被final修饰的类不能被继承,但可以继承其他类。

        2:final修饰成员变量,该变量就是常量,一次赋值终身不变。必须显示赋值或构造方法赋值(每一个构造方法都必须赋值)

        3:被final修饰的成员方法不能被重写。但是允许被重写的方法,重写后可以加final修饰。

        4:final修饰局部变量,该变量就是常量,一次赋值终身不变。定义时不赋值,使用时在赋值,但是只能赋值一次,不赋值不使用。

    static:

        概念:static是静态修饰符,一般用来修饰类中的成员,可以通过static修饰成员变量,不创建对象,来访问成员变量。

        特点:

          1:被static修饰的成员变量属于类,不属于这个类的某个对象。也就是说当一个对象对static成员变量值就行修改之后,其他对象中的static成员变量值也随之改变。(因为被static修饰的成员变量的值,存储在方法和数据共享区里的静态区,这里会扫描所有被static修饰的方法和成员变量,并给成员变量赋初始值,也就说因为成员变量属于类,则所有对象的值都会改变)

          2:被static修饰的成员通过类名直接访问。

            格式:

            类名.成员变量名

            类名.成员方法名(参数)

         注意事项:

          静态可以访问静态,不可以访问非静态,非静态可以访问静态。因为静态内用优先于非静态,也就是静态存在时,非静态还没有被执行。但静态与静态同在静态区,当然非静态能访问静态。

    同时不能使用this,super。

          main方法为静态方法仅仅为程序执行入口,它不属于任何一个对象,可以定义在任意类中。

          多态中  :访问成员变量:编译运行许看左边,
                   访问成员方法:如果父类方法是静态的,编译运行都看左边(因为被static修饰的成员方法属于类,因为声明的是父类的类的变量名,所以调用的是父类的方法,而不调用子类的),
                      如果父类方法是 非静态的,那么编译看做左边,运行看右边
           定义静态变量:

                定义格式:

                public static final 数据类型 变量名 = 值;(接口中的每个成员变量都默认使用public static final修饰,所有接口中的成员变量已是静态常量,由于接口没有构造方法,所以必须显示赋值。可以直接用接口名访问)。

  • 相关阅读:
    BZOJ3065(替罪羊树套线段树)
    BZOJ3052(树上带修莫队)
    BZOJ1095(动态点分治+堆)
    NOIWC颓废记
    BZOJ2125 最短路
    Simpson积分(BZOJ2178)
    BZOJ4555 [Tjoi2016&Heoi2016]求和
    NTT+多项式求逆+多项式开方(BZOJ3625)
    Miller-Rabin,Pollard-Rho(BZOJ3667)
    单纯形求解线性规划(BZOJ1061)
  • 原文地址:https://www.cnblogs.com/maxuefeng/p/13740365.html
Copyright © 2020-2023  润新知