java中,abstract类可以有final修饰吗,求大师指点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中,abstract类可以有final修饰吗,求大师指点相关的知识,希望对你有一定的参考价值。

abstract类中可以有非abstract方法,但该方法可不可以被final修饰

与普通类相比,抽象类可以有abstract方法,也可以有非abstract方法。抽象方法只允许声明,不允许实现,而且不允许使用final和abstract同时修饰一个方法。
抽象类不能用new运算符创建对象:如果一个非抽象类时某个抽象类的子类,那么它必须重写父类的抽象方法,给出方法体,即在子类中将abstract方法重新声明,但必须去掉abstract修饰,同时要保证声明的方法名字、返回类型、参数个数和类型与父类的abstract方法完全相同。这就是为什么不允许使用final和abstract同时修饰一个方法的原因。
做上转型对象:抽象类也可以没有abstract方法;如果一个抽象类时另一个抽象类的子类,它可以重写其父类的abstract方法,也可以继承这个abstract方法。
参考技术A abstract修饰的类为抽象类,抽象类中的抽象方法必须被重写,但final修饰的方法又规定不能重写,所以abstract修饰的类或方法 不能使用final修饰本回答被提问者采纳 参考技术B 要知道final的特性,变量赋值不能被再次赋值,被修饰的方法无法被继承,abstract
的非abstract一般是抽取公共方法来实现,子方法直接用就可以,如果abstract中的方法被final
修饰但是不能被继承,毫无意义
参考技术C 应该不可以,final修饰了的类不能被继承,所以一个抽象类不能被继承就失去了任何意义了。

java — 抽象abstract 和 最终 final

 

java — 抽象abstract 和 最终 final 修饰符

一、抽象类和抽象方法

  抽象类:由于许多对象都有共同的属性和方法,产生了代码冗余,抽象类做的就是将这些类共同的方法和属性 抽取 出来,变成了一个类,那就是抽象类。

      和 父类 很像对不对,其实抽象类就是父类中的一种,必须被继承才能完美使用的一种类。

  1.  抽象类的声明

[访问修饰符] abstract class 类名 {
    //方法体
}

  2.  抽象方法的声明

[访问修饰符] abstract 返回值类型 方法名 (形参类型 形参名,......);

    注意:

  • 抽象方法没有方法体,即没有花括号
  • 想要使用抽象方法,必须要被在子类中进行重写
  • 抽象方法中不能用 private ,static 和 final 进行修饰

  3.  抽象方法 和 抽象类 的注意事项

      • 抽象方法必须放在抽象类中
      • 抽象类中 可以 有普通方法和抽象方法,但并不是一定要有

  4.   抽象类的注意事项

      • 抽象类只能被继承,不能实例化
      • 若子类为普通类并继承了抽象类,则 必须重写 抽象类中全部的抽象方法。如果没有全部重写,那就将子类变成抽象类
      • 当一个类实现了一个接口时,则 必须重写 接口中全部的抽象方法。如果没有全部重写,那就将那个类变成抽象类

 

二、 最终修饰符 final

  • 用 final 修饰 变量 时:
    • 这个变量在 声明 时就必须被初始化,或者在构造器中赋值
    • 在初始化完成后,不能再被赋值,即为固定常量
  • 用 final 修饰 方法 时:
    • 该方法不能被重写
    • 不能修饰抽象方法
  • 用 final 修饰 类 时:
    • 该类不能被继承

 

以上是关于java中,abstract类可以有final修饰吗,求大师指点的主要内容,如果未能解决你的问题,请参考以下文章

抽象 final修饰符

抽象 final修饰符

final 和 abstract 抽象类

Java修饰符 abstract,static,final 的区别详解

abstract关键字

final与abstract关键字