Java this、final等关键字总结

论坛 期权论坛 脚本     
niminba   2021-5-23 02:50   1430   0

this

关键字this引用对象自身。它也可以在构造方法内部用于调用同一个类的其他构造方法。

隐藏的静态变量可以通过”类.静态变量”来引用,而隐藏的实例变量就需要使用”this.实例变量”来引用。

调用一个重载的构造方法this引用是必须的。

this是个隐式参数,代表当前对象

publie class Student{
 private String name; 
 public void setName(String name){ 
 this.name=name; //this.name为当前对象的成员变量 
} }

如果某个构造方法的第一个语句具有形式this( ••• ),那么这个构造方法将调用同一类中的其他构造方法。

注意:

在构造器中this(…)必须放在该构造器的第一行。

this不能出现在静态方法里面

super

super关键字代指父类,可以用于调用父类的普通方法和构造方法。

super()表示调用父类的构造器

super.方法来引用父类的方法

super()也和this()一样必须放在方法的第一句

super()和this()不能同时出现

super可以屏蔽子类属性和父类属性重名时带来的属性遮盖,super. 表示调用父类的方法或属性

在子类的构造器中如果没有指定调用父类的哪一个构造器,那么就会调用父类的无参构造器,即super()

注意:

父类的构造器不能被子类继承

方法和属性可以被继承,权限不限制能否继承过来,限制的是能否直接访问

先构造父类,后构造子类

instanceof

用法:引用 instanceof 类名

判断这个引用所指向的对象是否属于这个类。

用在强制转换之前,避免类型转换异常。

 if(a instanceof Dog){ 
 Dog d=(Dog)a; 
 } 
implements

一个类实现一个接口必须实现接口中所有的方法,否则其为抽象类,并且在实现类中的方法要加上public(不能省略)。

类中的默认修饰符:default。

接口中的默认修饰符:public。

一个类除了继承另一个类外(只能继承一个类),还可以实现多个接口(接口之间用逗号分隔)。

static

把对象相关的变成类相关的,它可以修饰属性、方法、代码块和内部类.

static修饰属性(类变量):

那么这个属性就可以用” 类名.属性名 “来访问,也就是使这个属性成为本类的类变量,为本类对象所共享。

类加载的过程

类本身也是保存在文件中(字节码文件保存着类的信息)的,Java会通过I/O流把类的文件读入JVM(java虚拟机),这个过程称为类的 加载。

JVM会通过类路径(CLASSPATH)来找字节码文件。需要的时候才会进行类加载,生成对象时是先加载后构造

类变量,会在加载时自动初始化,初始化规则和实例变量相同。

注意:

类中的实例变量是在创建对象时被初始化的。

static修饰的属性,是在类加载时被创建并进行初始化,类加载的过程只进行一次,也就是类变量只会被创建一次。

static修饰方法(静态方法):

会使这个方法成为整个类所公有的方法,可以用” 类名.方法名 “访问。

static修饰的方法,不能直接访问本类中的非静态成员,但本类的非静态方法可以访问本类的静态成员。

在静态方法中不能出现this关键字。

父类中是静态方法,子类中不能覆盖为非静态方法,在符合覆盖规则的前提下,在父子类中,父类中的静态方法可以被子类中的静态方法覆盖,但是没有多态。(在使用对象调用静态方法时其实是调用编译时类型的静态方法)

java中的main方法必须写成static的原因:

在类加载时无法创建对象,而静态方法可以不通过对象调用,所以在类加载时就可以通过main方法入口来运行程序。

static修饰初始代码块:

这时这个初始代码块就叫做静态初始代码块,这个代码块只在类加载时被执行一次。

可以用静态初始代码块初始化一个类。

动态初始代码块,写在类体中的“{}”,这个代码块是在生成对象时运行,这种代码块叫动态初始代码

final

修饰符final:不允许改变,可以修饰变量、方法、类。

final修饰变量:

被fianl修饰的变量就

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1060120
帖子:212021
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP