final修饰类,让类绝育了(不能继承) 同一个包下不能定义两个一样的类,会冲突报错,类定义出来的变量是引用类型的变量(属于对象或类的,值在堆里面,栈内存存储的是地址) 引用类型的变量:栈内存是地址,堆内存是值
final修饰类:不能被继承
package com.itheima.d3_final;public class Test {public static void main(String[] args) {// 目标:记住final的语法// 1.final修饰类,类不能被继承(final最好修饰工具类,显得比较专业,因为工具类只要调用这个类(类名.方法),不要继承// 2. final修饰方法,方法不能被重写// 3. final修饰变量,总规则:变量有且仅能被赋值一次}}////class Student extends People{// @Override// public void eat() {// super.eat();// System.out.println("学生吃的很多");// }//}//////class People{// public final void eat(){ // final 在修饰这个方法时(写在public后面),这个方法不能重写// System.out.println("人要吃东西~~");// }//}////class wolf extends Animal{////}////final class Animal{ 这里使用了final之后,这个Animal就不能被继承//}
final修饰变量:不能被第二次赋值
package com.itheima.d3_final;public class Test2 {// 二:修饰静态成员变量(public static final 修饰的也称为常量了) // final加了之后一定得赋值(final是写在变量类型前面)public static final String schoolName = "黑马";// 三:修饰实例成员变量(几乎不用) 因为实例成员变量是属于对象的,相当于写了final之后,该对象的变量写死了public final String name = "猪刚烈";public static void main(String[] args) {// 目标:理解final修饰变量的作用:总规则:变量有且仅能被赋值一次,(理解语法)// 变量有几种:// 1.局部变量(写在方法里面的成员)// 2.成员变量(一般是写在类里面,方法外)就是自己创建的类,如何定义成员变量// -- 实例成员变量// -- 静态成员变量// 一:修饰局部变量final double rate = 3.14;// rate = 3.19; // 被final修饰了之后,只能被赋值一次,下次赋值就报错buy(0.8); // 已经第一次赋值了// schoolName = "黑马程序员"; // 第二次赋值Test2 t = new Test2();System.out.println(t.name); // 猪刚烈// t.name = "天蓬元帅";//注意:final修饰引用类型的变量,其地址不能被改变(不能被第二次赋值,但是指向的对象内容是可以改变的final Teacher t2 = new Teacher("学习,授课,吹牛逼"); // 一般创建有参构造器后要加这个:this.hobby = hobby; //将传入的hobby赋值给对象的成员hobby// t2 = null; // 将地址改为null(没加final之前)// 加了final之后地址不能改变,可以改变对象指向的内容(堆内存中存储的东西)}//// public static void buy(final double z){ // 这个形参被传参后就是第一次赋值,后面给变量赋值后属于第二次被赋值//// z = 0.1;// 如果加了final不能被第二次赋值,// }}class Teacher{private String hobby;public Teacher(String hobby) {this.hobby = hobby; //将传入的hobby赋值给对象的成员hobby}public String getHobby() {return hobby;}public void setHobby(String hobby) {this.hobby = hobby;}}
