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

 

posted @ 2020-09-27 16:38  马雪峰1  阅读(212)  评论(0)    收藏  举报