Java中的final修饰符
1.什么时候可以选择final修饰符
如果想让一个类不被其他类继承,不允许在有子类,这时候就要考虑用到final来修饰。
2.用final修饰的类
首先大家要明白,用final修饰的类是不能被继承的,下面来看一个错误案例。
eg:
final class Penguin
{
}
class SubPenguin extends Penguin
{
}
此时这段代码的class SubPenguin extends Penguin这行代码会报错:
The type SubPenguin cannot subclass the final class :翻译:该类型SubPenguin不能继承的最后类
即.Penguin类不能被继承。
3.用final修饰的方法
eg:
class Penguin
{
public final void print(){}
}
class Subpenguin extends Penguin
{
public void print(){}//错误
}
此时这段代码public void print(){}会报错,提示错误信息:
cannot override the final method from Penguin:翻译:无法覆盖企鹅的最后方法
即.print方法不能被子类重写。
4.用final修饰的变量
用final修饰的变量包括成员变量和局部变量,他们将变成常量,只能赋值一次。
public class Dog
{
final String name="小黄";//用final来修饰狗狗的姓名
public void setname(String name)
{
this.name=name; //错误,name不能在被赋值。
}
}
5.使用final修饰符的注意点
final可以用来修饰类,方法和属性,不能修饰构造方法。
6.用final修饰的引用型变量,变量所指对象的属性值是否能改变?
首先来看一个简单的例子
//狗狗类
public class Dog
{
String name;//狗狗的姓名
//带参构造,给狗狗的名字赋值
public Dog(String name)
{
this.name=name;
}
}
//测试类
class Test
{
public static void main(String[] args)
{
final Dog dog=new Dog("小黄");//实例化一个狗对象,用final修饰
dog.name="大黄";
dog=new Dog("小八");
}
}
这段代码中dog对象被修饰为final成常量,其值不可变,但要注意的是dog.name="大黄";这行代码并没有错,那么dog=new Dog("小八")是错的,也就是说,使用final修饰的引用型变量,变量不可以在指向另外的对象,但是所指变量的内容是可以改变的。
结论:使用final修饰的引用型变量时,变量的值时固定不变的,而变量所指对象的属性值是可变的。
Java中的final修饰符的更多相关文章
- Java学习笔记十九:Java中的访问控制修饰符
Java中的访问控制修饰符 一:Java修饰符的种类: 访问修饰符 非访问修饰符 修饰符用来定义类.方法或者变量,通常放在语句的最前端.我们通过下面的例子来说明: public class Hello ...
- 详解Java中的访问控制修饰符(public, protected, default, private)
Java中的访问控制修饰符已经困惑笔者多时,其中较复杂的情况一直不能理解透彻.今天下定决心,系统.全面地研究Java中的访问控制修饰符的所有方面,并整理成这篇文章,希望有同样疑惑的读者读完后能有所收获 ...
- 分享知识-快乐自己:java 中的访问修饰符
1):Java中的访问修饰符: Java面向对象的基本思想之一是封装细节并且公开接口.Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节. 访问控制 ...
- java中4种修饰符访问权限的区别及详解全过程
java中4种修饰符访问权限的区别及详解全过程 http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html java中4中修饰符分别为 ...
- (转)JAVA中的权限修饰符
注:本博文是转载的,原文地址:http://blog.csdn.net/xk632172748/article/details/51755438 Java中修饰符总结: 访问控制修饰符 访问控制修饰符 ...
- java中的类修饰符、成员变量修饰符、方法修饰符。
类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...
- java中的访问修饰符详解
主要讲述一下java中protected的修饰控制范围. 在叙述protected修饰符使用之前,先来说一下java,可以发现,开发java程序是一个时时刻刻都在编写类.开发类.定义类的过程.类里面可 ...
- Java中的权限修饰符private、protected、public
java中的修饰符分类: 权限修饰符: private, default, protected, public 状态修饰符: static, final 抽象修饰符: abstract 权限修饰符 我 ...
- Java中的类修饰符
资料主要来源于网络(http://60.28.60.3/zy/java-new/zhishidian/chap3/3.htm) 之前每次写小测试程序的时候,总是把一个类放在一个Java文件中,按理说这 ...
随机推荐
- WPF之TreeList的实现方法(一)
做项目的时候根据需求,WPF现有的控件不能完全满足我们的需求, 很多时候我们需要对现有的控件做一下加工. 最简单的我们可能会把Tree转换成List形式有的叫Grid形式就像下图一样 今天我先做一个完 ...
- mvc Areas注册域常见问题一
添加Areas主要目的是区分一些不同的业务,避免不同的业务都在同一个Controllers下造成混乱,在MVC项目上右键->添加区域->我添加了HMbolie和PClient两个区域-&g ...
- 移动APP为什么要开发两套Android和IOS-桥接模式
一.前言 现在用H5开发个 web app 多么方便,兼容两大系统Andriod和IOS.但是为什么许多公司还要开发原生的APP?开发原生的APP就需要开发两套一套运行在Andriod系统的,一套运行 ...
- php模式设计之 观察者模式
这是我写的<php模式设计>的第五篇.前面的四篇在不断学习不断加深认识,到了今天再看观察者模式,觉得非常容易理解.这也许就是我们积少成多的结果吧.希望还是能够不断进步. 开篇还是从名字说起 ...
- 你会swap吗,按值传递还是按引用?
问题 1.Java到底是按值传递(Call by Value),还是按引用传递(Call by Reference)? 2.如下面的代码,为什么不能进行交换? public CallBy swap2( ...
- 每个Android开发者都应该了解的资源列表
前言 这是一篇译文,原文地址Resources every Android developer must know,在译文开头,推荐两篇同样适合于Android开发者阅读的资源列表Android开 ...
- Linq之Expression高级篇(常用表达式类型)
目录 写在前面 系列文章 变量表达式 常量表达式 条件表达式 赋值表达式 二元运算符表达式 一元运算符表达式 循环表达式 块表达式 总结 写在前面 首先回顾一下上篇文章的内容,上篇文章介绍了表达式树的 ...
- javascript键盘输入控制
获取键盘控制事件 document.onkeydown = keyDown 当浏览器读到这个语句时,无论按下键盘上的哪个键,都将呼叫KeyDown()函数. 不同浏览器的实现: Netscape Ne ...
- Cas_个人理解
分为三个部分: 1.Cas服务器(用于验证用户是否正确) 1.用户信息存在服务端,其它客户端应用程序修改用户信息后需要同步到服务端 2.用户信息一般存储在服务端的数据 ...
- POJ1065 Area
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18499 Accepted: 5094 Description You ...