百度知道上搜到一个答案:final类中的所有成员方法都会被隐式地指定为final方法。
博客园看到一个结论:final定义的类,其中的属性、方法不是final的。
请问哪个是正确的呢?
10 个解决方案
#1
final类不能被继承 所以我认为final类中的所有成员方法都会被隐式地指定为final
#2
网上看到一个博客说可以利用反射机制获取属性和方法的修饰符,
然后结果显示,final修饰的类,其属性和方法不是被final修饰的。
大佬帮忙看看呢
https://www.cn去blog掉s.com文/yori字ckLi/p/6173710.html
然后结果显示,final修饰的类,其属性和方法不是被final修饰的。
大佬帮忙看看呢
https://www.cn去blog掉s.com文/yori字ckLi/p/6173710.html
#3
final是一个关键字,可以修饰类,变量,方法,
类:不能被继承
变量(属性和局部变量):不能被重新赋值
在声明时赋值,或在构造器中赋值
系统不会对final属性默认的赋初始值
方法:不能在子类中被覆盖,即不能修改
类:不能被继承
变量(属性和局部变量):不能被重新赋值
在声明时赋值,或在构造器中赋值
系统不会对final属性默认的赋初始值
方法:不能在子类中被覆盖,即不能修改
#4
不是的吧,final修饰的类只是不能被继承,其中的方法和属性不一定是final。
#5
其实我有个疑问,既然final修饰的类不能被继承,那就不可能有子类,那final类中的方法应该也没办法被覆盖的吧?(其实也就相当于final类中的方法也有final修饰?)不知道可以这么理解吗。。。
#6
1.final修饰类中的属性或者变量
无论属性是基本类型还是引用类型,final所起的作用都是变量里面存放的“值”不能变。
这个值,对于基本类型来说,变量里面放的就是实实在在的值,如1,“abc”等。
而引用类型变量里面放的是个地址,所以用final修饰引用类型变量指的是它里面的地址不能变,并不是说这个地址所指向的对象或数组的内容不可以变,这个一定要注意。
final修饰属性,声明变量时可以不赋值,而且一旦赋值就不能被修改了。对final属性可以在三个地方赋值:声明时、初始化块中、构造方法中。总之一定要赋值
2.final修饰类中的方法
作用:可以被继承,但继承后不能被重写。
3.inal修饰类
作用:类不可以被继承
无论属性是基本类型还是引用类型,final所起的作用都是变量里面存放的“值”不能变。
这个值,对于基本类型来说,变量里面放的就是实实在在的值,如1,“abc”等。
而引用类型变量里面放的是个地址,所以用final修饰引用类型变量指的是它里面的地址不能变,并不是说这个地址所指向的对象或数组的内容不可以变,这个一定要注意。
final修饰属性,声明变量时可以不赋值,而且一旦赋值就不能被修改了。对final属性可以在三个地方赋值:声明时、初始化块中、构造方法中。总之一定要赋值
2.final修饰类中的方法
作用:可以被继承,但继承后不能被重写。
3.inal修饰类
作用:类不可以被继承
#7
其实吧 楼上说那么多 实践一下不就好了 测试代码如下:
不知道为什么显示出来不对齐。。不过这不是重点 我们反编译一下class文件
显而易见并没有什么所谓的final类的成员方法就是final的 实践 > 一切
public final class Final {
public static void main(String args[]) {
}
void method() {
}
final void method2() {
}
}
不知道为什么显示出来不对齐。。不过这不是重点 我们反编译一下class文件
显而易见并没有什么所谓的final类的成员方法就是final的 实践 > 一切
#9
之所以要使用final方法,可能是出于对两方面理由的考虑。第一个是为方法“上锁”,防止任何继承类改变它的本来含义。设计程序时,若希望一个方法的行为在继承期间保持
不变,而且不可被覆盖或改写,就可以采取这种做法
不变,而且不可被覆盖或改写,就可以采取这种做法
#10
不是的吧,final修饰的类只是不能被继承,其中的方法和属性不一定是final。
其实我有个疑问,既然final修饰的类不能被继承,那就不可能有子类,那final类中的方法应该也没办法被覆盖的吧?(其实也就相当于final类中的方法也有final修饰?)不知道可以这么理解吗。。。
进行修改或扩展。对于final类中的成员,你可以定义其为final,也可以不是final。而对于方法,由于所属类为final的关系,自然也就成了final型的。你也可以明确的给final
类中的方法加上一个final,但这显然没有意义。
所以,你想的没什么问题,被final修饰的类不需要被覆盖重写。
#1
final类不能被继承 所以我认为final类中的所有成员方法都会被隐式地指定为final
#2
网上看到一个博客说可以利用反射机制获取属性和方法的修饰符,
然后结果显示,final修饰的类,其属性和方法不是被final修饰的。
大佬帮忙看看呢
https://www.cn去blog掉s.com文/yori字ckLi/p/6173710.html
然后结果显示,final修饰的类,其属性和方法不是被final修饰的。
大佬帮忙看看呢
https://www.cn去blog掉s.com文/yori字ckLi/p/6173710.html
#3
final是一个关键字,可以修饰类,变量,方法,
类:不能被继承
变量(属性和局部变量):不能被重新赋值
在声明时赋值,或在构造器中赋值
系统不会对final属性默认的赋初始值
方法:不能在子类中被覆盖,即不能修改
类:不能被继承
变量(属性和局部变量):不能被重新赋值
在声明时赋值,或在构造器中赋值
系统不会对final属性默认的赋初始值
方法:不能在子类中被覆盖,即不能修改
#4
不是的吧,final修饰的类只是不能被继承,其中的方法和属性不一定是final。
#5
不是的吧,final修饰的类只是不能被继承,其中的方法和属性不一定是final。
其实我有个疑问,既然final修饰的类不能被继承,那就不可能有子类,那final类中的方法应该也没办法被覆盖的吧?(其实也就相当于final类中的方法也有final修饰?)不知道可以这么理解吗。。。
#6
1.final修饰类中的属性或者变量
无论属性是基本类型还是引用类型,final所起的作用都是变量里面存放的“值”不能变。
这个值,对于基本类型来说,变量里面放的就是实实在在的值,如1,“abc”等。
而引用类型变量里面放的是个地址,所以用final修饰引用类型变量指的是它里面的地址不能变,并不是说这个地址所指向的对象或数组的内容不可以变,这个一定要注意。
final修饰属性,声明变量时可以不赋值,而且一旦赋值就不能被修改了。对final属性可以在三个地方赋值:声明时、初始化块中、构造方法中。总之一定要赋值
2.final修饰类中的方法
作用:可以被继承,但继承后不能被重写。
3.inal修饰类
作用:类不可以被继承
无论属性是基本类型还是引用类型,final所起的作用都是变量里面存放的“值”不能变。
这个值,对于基本类型来说,变量里面放的就是实实在在的值,如1,“abc”等。
而引用类型变量里面放的是个地址,所以用final修饰引用类型变量指的是它里面的地址不能变,并不是说这个地址所指向的对象或数组的内容不可以变,这个一定要注意。
final修饰属性,声明变量时可以不赋值,而且一旦赋值就不能被修改了。对final属性可以在三个地方赋值:声明时、初始化块中、构造方法中。总之一定要赋值
2.final修饰类中的方法
作用:可以被继承,但继承后不能被重写。
3.inal修饰类
作用:类不可以被继承
#7
其实吧 楼上说那么多 实践一下不就好了 测试代码如下:
不知道为什么显示出来不对齐。。不过这不是重点 我们反编译一下class文件
显而易见并没有什么所谓的final类的成员方法就是final的 实践 > 一切
public final class Final {
public static void main(String args[]) {
}
void method() {
}
final void method2() {
}
}
不知道为什么显示出来不对齐。。不过这不是重点 我们反编译一下class文件
显而易见并没有什么所谓的final类的成员方法就是final的 实践 > 一切
#8
#9
不是的吧,final修饰的类只是不能被继承,其中的方法和属性不一定是final。
其实我有个疑问,既然final修饰的类不能被继承,那就不可能有子类,那final类中的方法应该也没办法被覆盖的吧?(其实也就相当于final类中的方法也有final修饰?)不知道可以这么理解吗。。。
不变,而且不可被覆盖或改写,就可以采取这种做法
#10
不是的吧,final修饰的类只是不能被继承,其中的方法和属性不一定是final。
其实我有个疑问,既然final修饰的类不能被继承,那就不可能有子类,那final类中的方法应该也没办法被覆盖的吧?(其实也就相当于final类中的方法也有final修饰?)不知道可以这么理解吗。。。
进行修改或扩展。对于final类中的成员,你可以定义其为final,也可以不是final。而对于方法,由于所属类为final的关系,自然也就成了final型的。你也可以明确的给final
类中的方法加上一个final,但这显然没有意义。
所以,你想的没什么问题,被final修饰的类不需要被覆盖重写。