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 = "中国";
    }
    
  • 相关阅读:
    C#多线程下更新UI的几种方法
    .net WebApi使用swagger 美化接口文档
    C#内存管理
    LINQ 推迟查询的执行
    C#多播委托详解
    泛型委托
    使用 ref 和 out 传递数组注意事项
    何时使用委托而不使用接口
    委托中的协变和逆变
    细说SQL Server数据类型
  • 原文地址:https://www.cnblogs.com/zy200128/p/12708407.html
Copyright © 2011-2022 走看看