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修饰吗,求大师指点的主要内容,如果未能解决你的问题,请参考以下文章
Java修饰符 abstract,static,final 的区别详解
Java修饰符 abstract,static,final 的区别详解
JAVA之旅——final关键字 , 抽象类abstract,模板方法模式,接口interface,implements,特点,扩展
Java abstract类中可以有非abstract方法,但该方法不可以用final修饰对不对?