zoukankan      html  css  js  c++  java
  • 构造方法,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修饰,所有接口中的成员变量已是静态常量,由于接口没有构造方法,所以必须显示赋值。可以直接用接口名访问)。

  • 相关阅读:
    Android 开发 深入理解Handler、Looper、Messagequeue 转载
    Android 开发 Handler的基本使用
    Java 学习 注解
    Android 开发 AlarmManager 定时器
    Android 开发 框架系列 百度语音合成
    Android 开发 框架系列 Google的ORM框架 Room
    Android 开发 VectorDrawable 矢量图 (三)矢量图动画
    Android 开发 VectorDrawable 矢量图 (二)了解矢量图属性与绘制
    Android 开发 VectorDrawable 矢量图 (一)了解Android矢量图与获取矢量图
    Android 开发 知晓各种id信息 获取线程ID、activityID、内核ID
  • 原文地址:https://www.cnblogs.com/maxuefeng/p/13740365.html
Copyright © 2011-2022 走看看