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修饰的类不能被继承!

原文地址:https://www.cnblogs.com/fanyizhan/p/9900450.html