[JAVA · 初级]:11.终结者-final

关于final关键字的总结,是很容易学习和掌握的,大致分为用final修饰的符号常量、类、方法、属性四部分,而这四部分的内容也是我们必须掌握的,很实用,在项目中经常来利用final关键字来帮忙以完成我们特定的任务。下面就来看看最终的final:

符号常量

    用 final 修饰的变量就称之为最终变量,也称之为符号常量。

例如:

 double PI = 3.14;

===>>>  final double PI = 3.14;  //符号常量

Demo

<span style="font-size:18px;"><span style="font-size:18px;">package com.hqg.oop.d37.a3;
public class finalTest {
	public static void main(String[] args) {
		final double PI = 3.14;
		//PI = 3.1415926;  //符号常量不可中途改变其值。
		SonDemo1  sd = new SonDemo1();
		int re = sd.add(10, 20);
		System.out.println( re );
	}
}
class Person{
	private String name;
	private final boolean sex   ; //最终属性(只读属性)

	public Person( String name, boolean sex ) {
		this.name = name;
		this.sex = sex;
	}
}
class DemoA {
	public final int add( int x, int y ){
		return x + y;
	}
}
class SonDemo1 extends DemoA {
}
//class Son extends  String {
//
//}
final class Father {
}
//class Son extends Father {
//
//}</span></span>

用 final 修饰的类,即为最终类。

特性:

它不可有子类。即: 防继承的。

例如: 专家提供的 String 类就量个最终类。

方法

用 final 修饰的方法,即为最终方法。

特性:

它不可被重写。即: 防重写。

属性

用final修饰的实例变量就是最终属性,也成为只读属性。

特性:

  1) 它必须由final修饰。

2) 它一旦赋值,则终身不变。(中途不变)

  3) 当声明最终的实例变量时,若没有赋值,则在每一个构造器中必须对它赋值。

  4) 最终的实例变量没有设定器。

  5) 最终的实例变量名称大写。

Demo 

<span style="font-size:18px;"><span style="font-size:18px;">package com.hqg.oop.d38.a1;

public class FinalObjectVarTest {
	public static void main(String[] args) {
		Person p1 = new Person("张灵",false, 18);
		Person p2 = new Person("张灵",false, 18);
		System.out.println( p1 );
		System.out.println( p2 );

		System.out.println( p1.equals(p2) );

		//p1.SEX = true;
	}
}

class Person {
	//实例变量
	private String name;
	public  final boolean SEX; //约定: true为男, false为女
	private int age;

	public Person() {
		int n = (int)(2 * Math.random());
		this.SEX = n == 1 ;
	}
	public Person(String name,int age) {
		this();
		this.name = name;
		this.age = age;
	}
	public Person(String name, boolean sex, int age) {
		this.name = name;
		SEX = sex;
		this.age = age;
	}

	public void setName(String name) {
		this.name = name;
	}
	public void setAge(int age) {
		this.age = age;
	}

	//访问器
	public String getName() {
		return name;
	}
	public boolean isSEX() {
		return SEX;
	}
	public int getAge() {
		return age;
	}

	//
	@Override
	public String toString() {
		return "姓名: " + name + " 性别: " + (SEX ? "男":"女") + "  年龄: " + age;
	}

	@Override
	public boolean equals(Object obj) {
		Person pp = (Person)obj;
		if( this.name.equals( pp.name ) && this.SEX == pp.SEX && this.age == pp.age ){
			return true;
		}else{
			return false;
		}
	}
}
</span></span>

业务思想

就像英语中的一句谚语:”Each coin has two sides”(每个硬币都有两面),关键字final正如那只硬币。用final来定义符号常量、类、方法、属性可以减少我们很多工作,容错率也提高了很多。

时间: 2024-12-02 22:46:14

[JAVA &#183; 初级]:11.终结者-final的相关文章

[JAVA &amp;#183; 初级]:12.内部类

Java语言允许在类中再定义类,这种在其它类内部定义的类就叫内部类.内部类又分为:常规内部类.局部内部类.匿名内部类和静态嵌套类四种. 常规/局部内部类 包含在一个类的类体中的类. 扩展:外部类的概念:包含了内部类的类. 问:在内部类的方法中,是否可以直接访问外部类的成员? 答: 肯定的. 问:在外部类的方法中,是否可以直接访问内部类的成员? 案: 否定的. 问: 那,如何访问? 答: 先创建内部类的对象,再通过对象去访问. Demo <span style="font-size:18px

[JAVA &amp;#183; 初级]:5.以我微观看变量

背景 本篇博文主要讨论的是:局部变量和实例变量在内存的分配情况?是继[JAVA · 初级]:2.变量之后的又一次关于JAVA中变量的一些深入的解析.之前,关于变量的一些简单的总结已经'打包'至链接中的博文中,欢迎交流学习. 由于最近做项目的过程中,遇到的变量的变化情况,不能够很清楚的进行过程化处理,整理资料,总结一下. Demo <span style="font-size:18px;"><span style="font-size:18px;"&

[JAVA &amp;#183; 初级]:3.转义字符

定义 所有的ASCII码都可以用"\"加数字(一般是8进制数字)来表示.而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字字符,都不是它本来的ASCII字符意思了. 常见转移字符的含义表: 许多字符都有相应的转义字符序列,包括单引号(\').换行(\n).制表符(\t)和反斜线(\\).你可以在字符字面常量和字符串字面常量中使用转义字符序列.  运行机制 实际上,你可以通过使用被称为八进制转义字

[JAVA &amp;#183; 初级]:4.深入理解自增&amp;amp;自减运算

定义 自增,自减运算符: ++   --                  它们是计算机专家自创的特有运算符.                  ++ 有两种身份                  a) 前加  ++a: 其规则是: a先增加,后使用.                  b) 后加  a++: 其规则是: a先使用,后增加.                  注意: 不论是前加 ++a;  还是后加 a++; 它们最终等价于  a = a + 1; --有两种身份:       

[JAVA &amp;#183; 初级]:2.变量 &amp;amp; Integer和int的区别

变量 定义:它是计算机内存中一个存储单元,用来存储制定类型的数据: 性质:变量的值(存储的内容)会随程序的运行而产生变化. 三要素:            1) 名称: 注意: 变量名必须符合标识符的定义.            2) 类型: 例如: int 表示整型数据.            3) 作用域:指变量起作用的范围. 声明:            在java中,变量必须先声明,后使用.            格式1:  类型名 变量名 ;           格式2:  类型名 变

[JAVA &amp;#183; 初级]:1.环境变量的配置

起因 对于JAVA运行环境的配置,可以称之为"通向JAVA世界的一扇大门".而在途中的"颠沛流离",便当做是我们的成长的磨砺吧! 相信很多初学者也会因为JAVA运行环境的设置而操作多次,下面便是自己在最近时间内,关于环境变量的设置的总结,利人利己,做更好的自己. 设置 其实,设置环境变量有两种方法,打开环境变量的设置窗口,可以很清楚的看到有用户变量和系统变量两部分.而这两种方法便是设置用户变量和系统变量. 其区别:用户变量的设置,只是针对当前的用户使用,若是其他本电

[JAVA &amp;#183; 初级]:9.Object类提供的常用方法

String toString()  含义 此方法用来将对象的信息以字符串方式反馈出去. 规定: 此方法是默认调用的(自动调用). 因此,子类的对象要想通过toString()方法来反馈信息,则必须重写它. Demo <span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><span

[JAVA &amp;#183; 初级]:10.如何更好的理解多态

说道多态,一定离不开其它两大特性:封装和继承.而多态是在它们的基础之上表现而来的,息息相关.在记忆中,每一次学习面向对象的时候,都与这三大特性有扯不开的关系,其是面向对象的重点,当然也算是难点.但是,它们就像是一层窗户纸,只要有一个缝隙,你就完全可以搞懂什么是面向对象.下面来看看关于多态的一些介绍吧: 是什么? 文学角度:一千个读者就有一千零一个哈姆雷特: 公司主管角度:老板交代下来相同任务,每个人完成的情况不同: 专业角度:同种类的多个对象,在接收到同一个消息时却产生了不同反应和效果: 从代码

[JAVA &amp;#183; 初级]:8.特殊关键字:super

基本用法 super关键字和this关键字有很大程度上的相似,对于关键字super的的解释,也和this差不多,但是值得一提的是,super中,子类继承自父类时,super(和父类相同的属性):this.自己特有属性.实现子类对父类中共同属性的调用,减少代码书写量,提高了程序执行的效率. 1) 它的使用方式有两种: a) super.属性 或 super.方法       b) super() 或  super(参数) 2) 它的含义:       a) 它以 " super. " 方