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学习笔记十九: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中的权限修饰符