final的作用
1.final关键字是最终的意思,可以修饰(类、方法、变量)修饰类:表明该类是最终类,不能被继承。
2.修饰方法:表明该方法是最终方法,不能被重写。
3.修饰变量:表示该变量第一次赋值后,不能再次被赋值(有且仅能被赋值一次)。
final修饰变量的注意
1.final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。
2.final修饰的变量是引用类型:那么变量存储的地址值不能发生改变,但是地址指向的对象内容是可以发生变化的。
package com.itheima.d3_final;
public class Test {
public static void main(String[] args) {
// 目标:记住final的语法。
// 1、final修饰类,类不能被继承。
// 2、final修饰方法,方法不能被重写
// 3、final修饰变量,总规则:变量有且仅能被赋值一次。
}
}
class Student extends People{
// @Override
// public void eat() {
// System.out.println("学生吃的很多~~");
// }
}
class People{
public final void eat(){
System.out.println("人都要吃东西~~");
}
}
//class Wolf extends Animal{
//}
//
//final class Animal{
//}
package com.itheima.d3_final;
public class Test2 {
/**
二:修饰静态成员变量(public static final修饰的也称为常量了)
*/
public static final String schoolName = "黑马";
/**
三,修饰实例成员变量。(几乎不用)
*/
private final String name = "猪刚鬣";
public static void main(String[] args) {
// 目标:理解final修饰变量的作用:总规则:变量有且仅能被赋值一次。(理解语法)
// 变量有几种:
// 1、局部变量
// 2、成员变量
// -- 实例成员变量。
// -- 静态成员变量。
// 一:修饰局部变量
final double rate = 3.14;
// rate = 3.19; // 第二次赋值了。
buy(0.8);
// schoolName = "黑马程序员"; // 第二次赋值了。
Test2 t = new Test2();
System.out.println(t.name);
// t.name = "天蓬元帅";
// 注意:final修饰引用类型的变量,其地址值不能改变,但是指向的对象的内容可以改变的。
final Teacher t2 = new Teacher("学习,授课,吹吹水~~");
// t2 = null; // 第二次赋值了。
System.out.println(t2.getHobby());
t2.setHobby("运动");
System.out.println(t2.getHobby());
}
public static void buy(final double z){
// z = 0.1; // 第二次赋值了。
}
}
class Teacher{
private String hobby;
public Teacher(String hobby) {
this.hobby = hobby;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
}