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修饰的引用型变量时,变量的值时固定不变的,而变量所指对象的属性值是可变的。

时间: 2024-10-10 18:09:44

Java中的final修饰符的相关文章

java 中的 final修饰符

修饰符final:是常量,不允许改变 ,可以修饰 变量,方法 ,类 final修饰变量:被final修饰的变量就会变成常量,一旦赋值不能改变 常量可以在初始化时直接赋值,也可以在构造方法里赋值,只能在这两种方法里二选一,不能不为常量赋值 常量不会有默认初始值 锁定栈,使栈中的数据不可以改变 静态常量只能在初始化时直接赋值 final修饰方法:被final修饰的方法将不能被其子类覆盖,保持方法的稳定不能被覆盖 final修饰类:被final修饰的类将不能被继承          final类中的方

(转) java中的访问修饰符

对Java中的修饰符一直记不住,现在结合网上的一些资料进行总结,并重点说明一下protected修饰符. 一. Java中的访问修饰符 Java面向对象的基本思想之一是封装细节并且公开接口.Java语言采用访问控制修饰符来控制类及类的方法和变量的访问权限,从而向使用者暴露接口,但隐藏实现细节.访问控制分为四种级别: (1)public: 用public修饰的类.类属变量及方法,包内及包外的任何类(包括子类和普通类)均可以访问: (2)protected: 用protected修饰的类.类属变量及

Java中的类修饰符

资料主要来源于网络(http://60.28.60.3/zy/java-new/zhishidian/chap3/3.htm) 之前每次写小测试程序的时候,总是把一个类放在一个Java文件中,按理说这样比较规范,可主要原因是我是在不知道怎么在一个文件里放多个类,可见java基础有多差了...只要把类的属性改成默认的就可以了,也就是前面什么控制符都不加,采用默认的方式. Java语言程序设计中,定义类时除了要使用class 关键字说明所定义的数据类型是类,还可以在 class 之前增加若干类的修饰

详解Java中的访问控制修饰符(public, protected, default, private)

Java中的访问控制修饰符已经困惑笔者多时,其中较复杂的情况一直不能理解透彻.今天下定决心,系统.全面地研究Java中的访问控制修饰符的所有方面,并整理成这篇文章,希望有同样疑惑的读者读完后能有所收获.如果文章中出现错误,欢迎评论指出,共同交流~ 说在前面:这篇文章只研究Java中访问控制修饰符声明类的变量/方法的情况. 先抛出结论: * 成员变量/方法的访问权限 *                                        private        default  

java中4种修饰符访问权限的区别及详解全过程

java中4种修饰符访问权限的区别及详解全过程 http://jingyan.baidu.com/article/fedf0737700b3335ac8977ca.html java中4中修饰符分别为public.protect.default.private,他们这就说明了面向对象的封装性,所以我们要适用他们尽可能的让权限降到最低,从而安全性提高. 下面详细讲述下它们的访问权限问题.(同一个类中除内部类外所有修饰符都是可以访问的,所以下面排除这种情况.) 首先在这里把它们的访问权限表示出来:

JAVA中的权限修饰符

Java中修饰符总结: 访问控制修饰符 作用: 用于控制被修饰变量.方法.类的可见范围. public 的访问级别是最高的,其次是 protected.默认和 private. 成员变量和成员方法可以处于4个访问级别中的一个:公开.受保护.默认或私有. 存在继承关系时,父类不可以是 private,因为子类无法继承 顶层类可以处于公开或默认级别,顶层类不能被 protected 和 private 修饰. 局部变量不能被访问控制修饰符修饰 . 在不同包下面能够访问的权限修饰符只有: pulbic

java中的类修饰符、成员变量修饰符、方法修饰符。

类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. final,将一个类生命为最终(即非继承类),表示他不能被其他类继承. friendly,默认的修饰符,只有在相同包中的对象才能使用这样的类. 成员变量修饰符: public(公共访问控制符),指定该变量为公共的,他可以被任何对象的方法访问. private(私有访问控制符)指定该变量只允许自己的类的方法

java面向对象学习之——java中的类修饰符、成员变量修饰符、方法修饰符

类修饰符: public(访问控制符)-->将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类.abstract-->将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现.final-->将一个类生命为最终(即非继承类),表示他不能被其他类继承.friendly-->默认的修饰符,只有在相同包中的对象才能使用这样的类. 成员变量修饰符: public(公共访问控制符)-->指定该变量为公共的,他可以被任何对象的方法访问.private(私有访问控制符

Java中的访问修饰符详细解析

1.类的修饰符分为:可访问控制符和非访问控制符两种. 可访问控制符是:公共类修饰符 public 非访问控制符有:抽象类修饰符 abstract :最终类修饰符 final 1 )公共类修饰符 public : Java 语言中类的可访问控制符只有一个: public 即公共的.每个 Java 程序的主类都必须是 public 类作为公共工具供其它类和程序使用的应定义为 public 类. 2 )抽象类修饰符 abstract :凡是用 abstract 修饰符修饰的类,被称为抽象类.所谓抽象类