概述
1. final与private的区别
fiinal用于类的修饰的时候 :表示该类不可以被继承 ,函数隐式被指定为了final方法 变量根据需要指定final类型
即他的成员变量是可以被多次修改的
public final class Test {
int p =5;
void out() {
System.out.println("大家好");
}
}
class B {
public static void main(String[] args) {
Test a =new Test();
a.p=6;
int b =a.p=7;
System.out.println(b);
}
}
修饰函数的时候:表示该函数只可以被调用 不可以被复写 private函数被隐式指定为了final方法
如果一个类的函数添加了final方法 那么子类继承这个类 该方法不可以被重写 但是如果修饰符为private,那么子类写一个同名的方法的话就不受影响 因为这不算重写 ,子类访问不到这个方法
修饰类成员变量的时候:表示该变量只可以被赋值一次 要么在类的构造函数中赋值 ;
修饰引用类型的时候:表示他引用的值不会再变化 但是引用的值的值是可以变化的
注意点:
public class Test {
public static void main(String[] args) {
String a = "hello2";
final String b = "hello";
String d = "hello";
String c = b + 2;
String e = d + 2;
System.out.println((a == c));
System.out.println((a == e));
}
}
第一个返回结果为true 第二个为false 因为在编译阶段 b就有了值 那么结果就被放入了常量池,然后别的使用的话也是从常量池取值
public class TestFinal {
public static void main(String[] args){
TestFinal testFinal = new TestFinal();
StringBuffer buffer = new StringBuffer("hello");
testFinal.changeValue(buffer);
System.out.println(buffer);
}
public void changeValue(final StringBuffer buffer){
//final修饰引用类型的参数,不能再让其指向其他对象,但是对其所指向的内容是可以更改的。
//buffer = new StringBuffer("hi");
buffer.append("world");
}
}
结果为helloworld 即他指向的值不可以指向其他对象 但是他的值可以修改
最后
以上就是务实猎豹为你收集整理的每日面试题总结-------final与private的区别的全部内容,希望文章能够帮你解决每日面试题总结-------final与private的区别所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复