栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Final and Static 区别和联系

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Final and Static 区别和联系

Static

1. 静态方法只能访问静态方法和静态成员变量,若一定需要访问动态方法和动态成员变量,需要先创建该类的对象,由对象调用成员方法和成员变量

2. 静态方法和静态成员变量可以直接由 类名.静态方法(静态变量) 的方式调用

3.静态方法可以被继承,但是,不能被覆盖,即重写。

4.静态变量可以被重新赋值,这也意味着静态变量被声明时无需手动赋值,系统会自动匹配初始值(这和不被static修饰时一致),在创建对象后再重新赋值即可


5. 如果父类中含有一个静态方法,且在子类中也含有一个返回类型、方法名、参数列表均与之相同的静态方法,那么该子类实际上只是将父类中的该同名方法进行了隐藏,而非重写。可以使用语法:父类名.静态方法调用隐藏的静态方法。

换句话说,父类和子类中含有的其实是两个没有关系的方法,它们的行为也并不具有多态性。因此,通过一个指向子类对象的父类引用变量(向上继承)来调用父子同名的静态方法时,只会调用父类的静态方法。

实际上,静态方法和静态变量在加载类的时候已经创建,而动态方法和变量在创建对象的时候才会创建,先加载的静态方法自然不能直接访问后加载的方法和成员

Final

final变量经常和static关键字一起使用,作为常量

1.修饰变量

final修饰基本数据类型的变量时,必须赋予初始值且不能被改变;修饰引用变量时,该引用变量不能再指向其他对象,若final修饰基本数据类型变量时不赋予初始值以及引用变量指向其他对象时就会报错

 

 

2.修饰方法

方法前面加上final关键字,代表这个方法不可以被子类的方法重写。如果你认为一个方法的功能已经足够完整了,子类中不需要改变的话,你可以声明此方法为final。final方法比非final方法要快,因为在编译的时候已经静态绑定了,不需要在运行时再动态绑定。

 

3.修饰类

1. 使用final来修饰的类叫作final类。final类通常功能是完整的,不能被继承。Java中有许多类是final的,譬如String, Interger以及其他包装类。

2. 虽然被final修饰的类不可被继承,但其内容依然可以被改变

 

总结:

static关键字修饰变量时,会使该变量在类加载时就被初始化,不会因为对象的创建再次被加载,当变量被static 修饰时就代表该变量只会被初始化一次

被static或final修饰的成员方法都不可以被重写或继承

被static修饰的变量可以被重新赋值或重定向地址;被final修饰的变量必须赋予初始值且不能被重新赋值或指向一个对象地址后不能再重定向

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881453.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号