how2j.cn


工具版本兼容问题
final修饰类,方法,基本类型变量,引用的时候分别有不同的意思。


本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频



8分28秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)



示例 1 : final修饰类   
示例 2 : final修饰方法   
示例 3 : final修饰基本类型变量   
示例 4 : final修饰引用   
示例 5 : 常量   
示例 6 : 练习-final   
示例 7 : 答案-final   

当Hero被修饰成final的时候,表示Hero不能够被继承
其子类会出现编译错误
final修饰类
package charactor; public final class Hero extends Object { String name; //姓名 float hp; //血量 }
package charactor;

public final class Hero extends Object {
       
    String name; //姓名
       
    float hp; //血量
       
}
Hero的useItem方法被修饰成final,那么该方法在ADHero中,不能够被重写
final修饰方法
package charactor; import property.Item; public class Hero extends Object { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 public final void useItem(Item i){ System.out.println("hero use item"); i.effect(); } public Hero(){ System.out.println("Hero的无参的构造方法 "); } public Hero(String name){ System.out.println("Hero的有一个参数的构造方法 "); this.name = name; } public static void main(String[] args) { new Hero(); } }
示例 3 :

final修饰基本类型变量

edit edit
final修饰基本类型变量,表示该变量只有一次赋值机会
16行进行了赋值,17行就不可以再进行赋值了
package charactor; public class Hero extends Object { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 public static void main(String[] args) { final int hp; hp = 5; hp = 6; } }
package charactor;

public class Hero extends Object {
       
    String name; //姓名
       
    float hp; //血量
       
    float armor; //护甲
       
    int moveSpeed; //移动速度
    
    public static void main(String[] args) {

    	final int hp;
    	hp = 5;
    	hp = 6;
    	
	}
}
final修饰引用
h引用被修饰成final,表示该引用只有1次指向对象的机会
所以17行会出现编译错误
但是,依然通过h引用修改对象的属性值hp,因为hp并没有final修饰
package charactor; public class Hero extends Object { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 public static void main(String[] args) { final Hero h; h =new Hero(); h =new Hero(); h.hp = 5; } }
常量指的是可以公开,直接访问,不会变化的值
比如 itemTotalNumber 物品栏的数量是6个
package charactor; public class Hero extends Object { public static final int itemTotalNumber = 6;//物品栏的数量 String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 public static void main(String[] args) { final Hero h; h =new Hero(); h.hp = 5; } }
示例 6 :

练习-final

练习难度 edit edit Or  姿势不对,事倍功半! 点击查看做练习的正确姿势
设计一个类SomeString,继承 String类。 能否继承?
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
查看本答案会花费1个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
查看本答案会花费1个积分,您目前总共有点积分。查看相同答案不会花费额外积分。 积分增加办法 或者一次性购买JAVA 基础总计0个答案 (总共需要0积分)
账号未激活 账号未激活,功能受限。 请点击激活


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 JAVA 基础-接口与继承-final 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 982790551
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图