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. HDU1754 && HDU1166 线段树模板题

    HDU1754 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1754 题目分析:对于给出的一个很长的区间,对其进行单点更新值和区间求最大值的操作,由于 ...

  2. 最常见Linux操作

    命令 含义 cd /home/hadoop #把/home/hadoop设置为当前目录 cd .. #返回上一级目录 cd ~ #进入到当前Linux系统登录用户的主目录(或主文件夹).在 Linux ...

  3. [RN] Android 设备adb连接后unauthorized解决方法

    Android 设备adb连接后unauthorized解决方法 安卓设备usb或者adbwireless连接后输入adb device后都是未授权状态 相信很多同学都会遇到这种情况,除了一直重复开关 ...

  4. javascript中的作用域和变量提升

    js的运行主要分两个阶段:js的预解析和运行,预解析阶段所有的变量声明和函数定义都会提前,但是变量的赋值不会提前.

  5. C语言实现linux之who功能

    /* who_test.c */ #include<stdio.h> #include<string.h> #include<getopt.h> #include& ...

  6. 关于getClass(),Object.class,getClassLoader的理解

    1.对Class类的理解:Class类包含了类的信息,如构造方法.方法.属性,可用于反射.以下是所有方法 2.获取Class类对象的几种方法: Test test = new Test(); (1). ...

  7. keepass口令管理实践

    语言修改 加入插件 插件的学习及应用

  8. Leetcode 5274. 停在原地的方案数

    纪念第一次正式参加,听说这次题目很水,感觉确实不是很难,一般前两题都很简单,这次,到第三题的时候,都还可以做,emm...... 实际代码记录: #include <iostream> # ...

  9. 【K8S】Kubernetes: --image-pull-policy always does not work

    https://stackoverflow.com/questions/45905999/kubernetes-image-pull-policy-always-does-not-work

  10. 【Kubernetes学习之二】Kubernetes集群安装

    环境 centos 7 Kubernetes有三种安装方式:yum.二进制.kubeadm,这里演示kubeadm. 一.准备工作1.软件版本 软件 版本 kubernetes v1.15.3 Cen ...