zoukankan      html  css  js  c++  java
  • static、this、super、final

    static关键字

    在类中,用static声明的成员变量为静态成员变量。(类名.static成员方法或属性,并没有创建对象)

      --它为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化,

      --对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!!

      --可以使用”对象.类属性”来调用。不过,一般都是用“类名.类属性”。

      --用static声明的方法为静态方法

      --不需要对象,就可以调用(类名.方法名)

      在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。

    静态方法不能调用非静态的属性和方法。不能使用 this 和 super。

    非静态方法既可以调用静态的属性和方法,也可以调用非静态的属性和方法。

    静态初始化块

      --是在类初始化时执行,不是在创建类时执行。

      --静态初始化块中不能访问非 static 成员。

      成员变量加static:看数据是否共享

      成员方法加static:看方法中的变量(如果方法没有调用过非静态成员,将方法定义为静态)

      如果父类和子类存在相同的用 static 修饰的成员变量和成员方法,如果父类调用变量和方法,会调用父类的(多态指的是对象的多态,static 修饰的属性和方法属于类,不存在多态)


     this关键字

      :本类对象的引用,哪个对象调用的,this 就表示哪一个对象

      --普通方法中,this 总是指向调用该方法的对象。

      --构造方法中,this 总是指向正要初始化的对象。

    this最长用的用法

      --this point  让类中的一个方法,访问该类的另一个方法或属性。

      --this()使用this关键字调用重载构造方法。避免相同的初始化代码,只能在构造方法中用,并且必须位于构造方法的第一句。

    注意事项:

      -- this 不能用于static方法!(this指向当前对象,static方法跟对象没有一毛钱的关系)

      -- this(实参列表):调用本类中的构造方法


     super关键字

      --super是直接父类对象的引用。可以通过super来访问父类中被子类覆盖的方法或属性。

    普通方法:没有顺序限制,可以随便调用。

    构造函数:任何类的构造方法中,若是构造方法的第一行代码没有显式的调用super(...);那么Java默认都会调用super(); 所以你这里的super(); 加不加都无所谓。

      调用父类的成员变量--super.成员变量。

      调用父类的成员方法--super.成员方法()。

    注意:

      --在创建子类对象时,父类的构造方法会先执行,因为子类中所有构造方法的第一行有默认的隐式 super();语句。

      --子类中所有的构造方法,无论重载多少个,第一行必须是super()。

      --如果父类有多个构造方法,子类任意调用一个就可以。

    为什么子类对象创建都要访问父类的构造方法?

      因为子类继承了父类的内容,所以创建对象时,必须要先看父类是如何对其内容进行初始化的。

    this 和 super 既然都能位于第一行,只使用其中一个;但是无论如何,子类的所有构造方法,直接或间接,必须调用到父类构造方法。

     1 public class Fu {
     2     int a;
     3     public Fu(int a){
     4         this.a = a;
     5     }
     6 }
     7 
     8 
     9 public class Zi extends Fu{
    10     public Zi(){
    11         //调用的是自己的构造方法,间接形式调用了父类的构造方法
    12         this(6);
    13     }
    14     
    15     public Zi(int a){
    16         super(a);
    17     }
    18 }

     final关键字

     修饰变量:

       --被final修饰的变量不可改变。即初始化一次后,就不能再次被赋值!即,变为常量!

      注意:修饰成员变量,需要在创建对象前赋值,否则报错。

     1 public class Demo {
     2     
     3     final int m = 1;
     4     
     5     final int n;
     6     
     7     public Demo(int n){
     8         this.n = n;
     9     }
    10 }

    修饰方法:

       --被final修饰的方法不可以被子类重写!

    修饰类:

      --被final修饰的类不能被继承!

  • 相关阅读:
    equals方法
    类和对象
    SharePoint品牌化和自定义--第三章节--收集品牌化需求(4)--生成创造性的和UX发现简报
    SharePoint品牌化和自定义--第三章节--收集品牌化需求(3)--要当心的地方
    SharePoint品牌化和自定义--第三章节--收集品牌化需求(2)--引用其他设计的价值
    SharePoint品牌化和自定义--第三章节--收集品牌化需求(1)--要问的关键问题
    SharePoint品牌化和自定义--第三章节--收集品牌化需求
    SharePoint品牌化和自定义--第二章节--用户体验品牌化过程概览(3)--总结
    SharePoint品牌化和自定义--第二章节--用户体验品牌化过程概览(2)--任务与责任
    SharePoint品牌化和自定义--第二章节--用户体验品牌化过程概览(1)--4Ds
  • 原文地址:https://www.cnblogs.com/fanyizhan/p/9900450.html
Copyright © 2011-2022 走看看