Java中的final修饰符

Linux大全评论522 views阅读模式

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修饰的引用型变量,变量不可以在指向另外的对象,但是所指变量的内容是可以改变的。

企鹅博客
  • 本文由 发表于 2020年8月19日 12:20:47
  • 转载请务必保留本文链接:https://www.qieseo.com/133549.html

发表评论