博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scjp考试准备 - 8 - final关键字
阅读量:6090 次
发布时间:2019-06-20

本文共 1378 字,大约阅读时间需要 4 分钟。

题目,如下代码的执行结果:

import java.util.ArrayList;class Pizza{    ArrayList toppings;        public final void addTopping(String topping){        toppings.add(topping);    }        public void removeTopping(String topping){        toppings.remove(topping);    }}class PepperoniPizza extends Pizza{    public void addTopping(String topping){        System.out.println("Cannot add Toppings");    }        public void removeTopping(String topping){        System.out.println("Cannot remove pepperoni");    }}public class Test{    public static void main(String[] args){        Pizza pizza = new PepperoniPizza();        pizza.addTopping("Mushrooms");        pizza.removeTopping("Pepperoni");    }    }

 

这道题考察的还是继承和重写相关的知识。不过这里涉及到了final关键字。

查了一下final关键字相关的知识点:

1. final修饰的成员变量必须显式指定初始值;

2. final修饰的类成员变量必须在声明变量时或静态初始化块中指定初始值;

3. final修饰的实例成员变量必须在声明变量时、或非静态初始化块或构造器中指定初始值;

4. final修饰的成员变量一旦被赋予初始值后就不可以被重新赋值;

5. final修饰的成员变量在被指定初始值前(被初始化前)不可以被访问;

6. 对于final修饰的局部变量。因为系统不会对局部变量进行初始化,局部变量必须被显式初始化。因此使用final修饰局部变量时,可以在定义时指定初始值,也可以不指定初始值。同样的,final修饰的局部变量一旦被指定初始值后也不可以被重新赋值。这里值得一提的是final修饰的形参,final修饰的形参所在的方法中,final修饰的形参不可以被赋值;

7. 对于final修饰的引用类型变量。引用类型变量保存的仅是一个引用地址,使用final仅能保证变量所保存的地址不发生变动,但是地址中所保存的对象却是可以变化的;

8. final方法不可以被重写。如果不希望子类重写父类的某个方法,可以使用final修饰这个方法;

9. final修饰的类不可以有子类。为了保证某个类不可以被继承,可以使用final修饰这个类。

 

如题中Pizza类中的addTopping方法就不可被重写。重写会报异常。

转载于:https://www.cnblogs.com/amunote/p/3943341.html

你可能感兴趣的文章
Hive Export和Import介绍及操作示例
查看>>
http://mongoexplorer.com/ 一个不错的 mongodb 客户端工具。。。
查看>>
上传jar包到nexus私服
查看>>
Why Namespace? - 每天5分钟玩转 OpenStack(102)
查看>>
Project:如何分析项目中的资源分配情况
查看>>
HDU 4803 Poor Warehouse Keeper (贪心+避开精度)
查看>>
小错误汇总
查看>>
Spring源码系列 — Envoriment组件
查看>>
java正则表达式去除html标签,Java中正则表达式去除html标签
查看>>
使用Cobbler批量部署Linux操作系统
查看>>
zabbix企业应用之服务端与客户端的安装
查看>>
实例讲解遗传算法——基于遗传算法的自动组卷系统【理论篇】
查看>>
无法在web服务器上启动调试。调试失败,因为没有启用集成windows身份验证
查看>>
Bat相关的项目应用
查看>>
Django为数据库的ORM写测试例(TestCase)
查看>>
NYOJ-107 A Famous ICPC Team
查看>>
与众不同 windows phone (44) - 8.0 位置和地图
查看>>
Visual Studio Code 使用 ESLint 增强代码风格检查
查看>>
iOS设备中的推送(二):证书
查看>>
敏捷 - #3 原则:经常提供工作软件 ( #3 Agile - Principle)
查看>>