1.final的概念
2.final修饰的变量
3.final修饰的方法
4.final修饰的类
/*final1、final是java语言中的一个关键字。2、final表示:最终的,不可变的。3、final修饰的变量?final修饰的局部变量,一旦赋值,不能重新赋值。4、final修饰的方法?final修饰的方法无法被覆盖,被重写。5、final修饰的类?final修饰的类无法继承。6、final控制不了能不能调用的问题。final管的是啥?final修饰的表示最后的,不能变的,不能改的。重点【精辟:final修饰的变量,只能赋一次值。】*/public class FinalTest01{public static void main(String[] args){// 局部变量int i = 100;i = 200;// 局部变量final int k = 100;// 重新赋值//错误: 无法为最终变量k分配值//k = 300;final int m;// 第一次赋值m = 200;// 重新赋值// 编译报错。错误: 可能已分配变量m//m = 300;}}final class A{ // A没有子孙}// B类继承A类,相当于对A类的功能进行扩展。如果你不希望别人对A类进行扩展。// 你可以对A类加final关键字,这样的话A类就无法继承了。// 错误: 无法从最终A进行继承/*class B extends A{}*/// 错误: 无法从最终String进行继承/*class MyString extends String{}*/class C{public final void doSome(){System.out.println("C's doSome...");}}class D extends C{/*public void doSome(){System.out.println("D's doSome...");}*/public final void doOther(){}public static void main(String[] args){// 多态C c = new D();//c.doOther(); // 报错了,因为编译器报错,编译器认为c是C类,c类中没有doOther()方法// 调用子类特有的方法时,需要向下转型。if(c instanceof D){// c指向的对象如果确实是一个D类型。D d1 = (D)c;d1.doOther();}// 不用多态可以。D d = new D();d.doOther();//错误: D中的doSome()无法覆盖C中的doSome()//d.doSome();}}
文章转载自哈特费尔德的思考,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




