static、final、abstract的作用

static

可以用来修饰属性、方法、代码块、内部类

当修饰属性时:我们称为静态变量,可以直接使用类名来访问,也可以使用对象访问,但推荐使用类名访问。我们创建类的多个对象,多个对象共享同一个静态变量。当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过的值。对于实例变量,我们创建类的多个对象,每个对象都独立的拥有一套类中的静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改

当修饰方法时:我们称为静态方法,随着类的加载而加载,可以直接通过类名 . 方法名的方法调用方法,静态方法不能被重写(应该说不叫重写){可以参考我的重载重写的文章}

当修饰代码块时:静态代码块,也叫做静态初始化代码块,它的作用就是给类中的静态属性做初始化的,由于静态代码块没有名字,我们并不能主动调用,它会在类加载的时候,自动执行。所以静态代码块,可以更早的给类中的静态属性,进行初始化赋值操作。 并且,静态代码块只会自动被执行一次,因为JVM在一次运行中,对一个类只会加载一次!

当修饰内部类时:静态内部类和成员内部类是类似的,只是这个内部类,多了static关键字进行修饰。在静态内部类中访问不了外部类中的非静态属性和方法,如果这个静态内部类不是private修饰的,那么在其他类中就可以访问到这个内部类。在其他类中,使用这个非private修饰的静态内部类的时候,需要注意以下几点: 1. 这个内部类需要import导入,并且是 外部类.内部类 的形式导入。 2. 在创建对象的时候,直接使用这个静态内部类的名字即可: new 静态内部类对象(); ,不再 需要依赖外部类对象了。

final

可以用来修饰变量、方法、类

当修饰变量时:用final修饰的变量就变成了常量,并且它只能被赋一次值,第二次赋值就会报错,一般和static搭配使用,当只有final修饰时,可以初始化的地方有,1.声明的同时赋值 2.匿名代码块中赋值 3.构造器中赋值,此时还有额外要求:类中出现的所有构造器都要赋值,否则报错。当既有final又有static修饰时,可以初始化的地方有,1.声明的同时赋值 2.静态代码块中赋值

当修饰方法时:用final修饰的方法可以被子类继承,但是不能被子类的重写

当修饰类时:用final修饰的类不能被继承,也就是说这个类是没有子类的。

abstract

可以用来修饰方法、类

当修饰方法时:如果abstract修饰方法,那么该方法就是抽象方法。抽象方法的特点: 只有方法的声明 没有方法的实现;包含抽象方法的类,一定是一个抽象类,反之不成立;子类继承了抽象父类里面有抽象方法时,需要实现该抽象方法,或者把子类也变成一个抽象类。abstract不能用来修饰私有方法、静态方法、final方法、final类。

当修饰类时:该类变为一个抽象类,里面可以定义抽象方法,但是不一定要定义抽象方法不能被实例化,但是可以通过子类继承父类来进行间接实例化,其他的和其他普通类差不多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值