Java的修饰符final

final修饰类,方法,基本类型变量,引用的时候分别有不同的意思。

示例 1 : final修饰类

当Hero被修饰成final的时候,表示Hero不能够被继承

其子类会出现编译错误

    package charactor;

    public final class Hero extends Object {

        String name; //姓名

        float hp; //血量

    }

示例 2 : final修饰方法

Hero的useItem方法被修饰成final,那么该方法在ADHero中,不能够被重写

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修饰基本类型变量

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; //16行
hp = 6; }
}

示例 4 : final修饰引用

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(); //17行 h.hp = 5; } }

示例 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; } }

练习Java的修饰符final

设计一个类SomeString,继承 String类。 能否继承?

答案

不能继承,因为String类是final修饰的不能被继承。

Java自学-接口与继承 final的更多相关文章

  1. Java自学-接口与继承 接口

    设计Java的接口 在设计LOL的时候,进攻类英雄有两种,一种是进行物理系攻击,一种是进行魔法系攻击 这时候,就可以使用接口来实现这个效果. 接口就像是一种约定,我们约定某些英雄是物理系英雄,那么他们 ...

  2. Java自学-接口与继承 抽象类

    Java 抽象类 在类中声明一个方法,这个方法没有实现体,是一个"空"方法 这样的方法就叫抽象方法,使用修饰符"abstract" 当一个类有抽象方法的时候,该 ...

  3. Java自学-接口与继承 内部类

    Java 内部类 内部类分为四种: 非静态内部类 静态内部类 匿名类 本地类 步骤 1 : 非静态内部类 非静态内部类 BattleScore "战斗成绩" 非静态内部类可以直接在 ...

  4. Java自学-接口与继承 对象转型

    Java中的对象转型 示例 1 : 明确引用类型与对象类型的概念 首先,明确引用类型与对象类型的概念 在这个例子里,有一个对象 new ADHero(), 同时也有一个引用ad 对象是有类型的, 是A ...

  5. Java自学-接口与继承 UML图

    UML 图 步骤 1 : UML 图 -- 类之间的关系 UML-Unified Module Language 统一建模语言,可以很方便的用于描述类的属性,方法,以及类和类之间的关系 步骤 2 : ...

  6. Java自学-接口与继承 默认方法

    默认方法 步骤 1 : 什么是默认方法 默认方法是JDK8新特性,指的是接口也可以提供具体方法了,而不像以前,只能提供抽象方法 Mortal 这个接口,增加了一个默认方法 revive,这个方法有实现 ...

  7. Java自学-接口与继承 Object类

    Java中的超类 Object 步骤 1 : Object类是所有类的父类 声明一个类的时候,默认是继承了Object public class Hero extends Object package ...

  8. Java自学-接口与继承 多态

    Java的多态 操作符的多态 +可以作为算数运算,也可以作为字符串连接 类的多态 父类引用指向子类对象 示例 1 : 操作符的多态 同一个操作符在不同情境下,具备不同的作用 如果+号两侧都是整型,那么 ...

  9. Java自学-接口与继承 重写

    Java 重写方法 子类可以继承父类的对象方法 在继承后,重复提供该方法,就叫做方法的重写 又叫覆盖 Override 步骤 1 : 父类Item 父类Item有一个方法,叫做effect packa ...

随机推荐

  1. SpringBoot全局Jackson配置未生效

    在做一个小项目,后台服务第一次用SpringBoot构建.接口使用Json格式,在application.properties中配置如下: spring.jackson.default-propert ...

  2. #51nod上topcoder练习记

    好久没刷51nod了,又听说topcoder有很多好题.那么就来51nod上刷吧.(那个客户端搞得有点烦(看不懂)) [1366 贫富差距] 当图不连通的时候,答案为无穷大. 当图连通时,两个点之间的 ...

  3. 管理node.js的nvm

    我们坑同时在运行2个项目.而2个不同的项目所使用的node版本又不一样,或者是要用更新的node版本进行试验或学习.这种情况下,对于维护多个版本的node将会是一键非常麻烦的事情,而nvm就是为了解决 ...

  4. Kali系统改国内源配置和SSH配置

    一.Kali系统更新源 使用官网的虚拟化镜像安装,默认为英文界面,更新源也是官方源.因为官方服务器在国外,速度不是很理想,现在就来改国内源并且更新系统. 1.使用编辑器打开系统源文本(在终端内操作,先 ...

  5. ERROR:Simulator861-Failed to link the design解决办法

    在安装目录下找到collect2.exe文件,删除就可以解决了.D:\install_dir\ISE2\14.7\ISE_DS\ISE\gnu\MinGW\5.0.0\nt\libexec\gcc\m ...

  6. 关于window PC机的预定义宏win32

    MSDN 里说,VC 有 3 个预处理常量,分别是 _WIN32,_WIN64,WIN32.这三个常量如何使用呢?看起来简单,其实是很困惑的. 在 Win32 配置下,WIN32 在“项目属性-C/C ...

  7. 推荐IOS Moneky测试工具Fast Monkey

    推荐IOS Moneky测试工具Fast Monkey 1 介绍 非插桩 iOS Monkey, 支持控件,每秒4-5 action事件 2 下载 https://github.com/zhangzh ...

  8. 关于央行数字货币DCEP的几个特点的思考(转)

    近期,央行即将推出数字货币,无论在金融领域还是在资本市场,央行数字货币这一话题都被炒的很火热.央行研发的数字货币叫做DCEP(DC,DigitalCurrency,是数字货币:EP,Electroni ...

  9. C中关键字inline用法

    一.什么是内联函数 在C语言中,如果一些函数被频繁的调用,不断地用函数入栈,即函数栈,则会造成栈空间或者栈内存的大量消耗,为了解决这个问题,特别的引入了inline关键字,表示为内联函数.栈空间指的是 ...

  10. linux --------- linux系统 安装tomcat

    1.下载tomcat  http://tomcat.apache.org/ 进入官网选download  点击 Archies 2.版本的下载与选择 3.使用winscp传递文件 4.查看所在位置 5 ...