zoukankan      html  css  js  c++  java
  • Java学习笔记 -关键字final

    1.final 是Java语言中的一个关键字
    2.final表示最终的,不可变的
    3.final修饰的类无法被继承
    4.final修饰的方法无法被覆盖
    5.final修饰的变量: 只能赋一次值

    //final修饰类
    final class A{
    	
    }
    class B extends A{
    	
    }
    //final修饰方法
    class C{
    	public final void doSome(){
    		System.out.println("C doSome");
    	}
    }
    class D extends C{
    	public void doSome(){
    		System.out.println("D doSome");
    	}
    }
    public class Test{
    	public static void main(String[] args){
    		B b = new B();
    		D d = new D();
    		d.doSome();
    		//final 修饰局部变量
    		final int i;
    		i = 10;
    		final int j = 100;
    		j = 300;
    	}
    }
    
    


    6.对于引用,final修饰引用指向对象A后,不能再指向对象B,但是对象A内部的数据可以修改
    7.final修饰实例变量必须手动赋值(手动赋值的含义:变量后赋值,构造方法赋值)

    • 实例变量如果没有手动赋值的话,系统会赋默认值
    • 且final修饰的变量: 只能赋一次值
    • 所以final修饰的实例变量,系统不管赋默认值,要求程序员必须手动赋值
    • 显然Java设计者不愿意背这个锅。
    • 手动赋值:在语法上有直接写出、构造方法两种,但是都是在对象创建的时候赋值
    class User{
    	//final修饰实例变量
    	//会报错,没有为age赋值
    	//final int age;
    	final double height = 1.8;
    	final double weight;
    	
    	//在构造方法中为finalx修饰的实例变量赋值会报错吗?
    	public User(){
    		weight = 90;
    	}
    }
    

    复习:实例变量在对象创建的时候赋值。
    所以无论是height还是weight都是在一个User对象创建的时候赋初值


    8.final修饰实例变量,表示这个变量不会随着对象变化而变化,
    所以结论:final修饰的实例变量,一般添加static声明为静态变量以节省内存
    终极结论:static final联合声明的变量称为”常量“,常量名建议全部大写,每个单词之间采用下划线连接

    class Chinese{
    	String id;
    	String name;
    	static final String COUNTRY = "中国";
    }
    
  • 相关阅读:
    双系统安装,引导被覆盖-如何解决?
    关于apue.3e中apue.h的使用
    UML类图关系
    设计模式的原则
    插入排序Insertion Sort
    Xcode intellisense meaning of letters in colored boxes like f,T,C,M,P,C,K,# etc
    asp.net mvc 页面内容呈现Html.Raw HtmlString
    sqlserver通过设计器修改表结构保存时提示:保存到文本问题
    在windows下使用Cygwin模拟unix环境,并安装apt-cyg,svn等工具
    vs2015插件推荐 Productivity Power Tools 2015
  • 原文地址:https://www.cnblogs.com/zy200128/p/12708407.html
Copyright © 2011-2022 走看看