/*
* final可用来修饰
* 基本数据类型 相当于常量 无法改变其值
* 引用数据类型 不可以改变变量所指向的对象 但是可以改变对象的内容 如属性
* 修饰方法 方法不可以被重写
* 修饰类 不可以被继承
* 修饰形参 包括基本和引用数据类型
* */
class Person
{
String name;
int age;
Person()
{
}
Person(String name,int age)
{
this.name = name;
this.age = age;
}
public void showInfo()
{
System.out.println("姓名"+name+"年龄"+age);
}
}
class FinalTest
{
//final 修饰的基本数据类型和引用数据类型 要么通过构造函数初始化 要么直接初始化
final int N=21;
final Person P;//直接初始化final Person P =new Person() ;
FinalTest() //构造函数初始化 final修饰的变量
{
P =new Person("张无忌",25) ;//P =new Person() ;
//N = 21;
}
//有返回值类型 方法名和类名相同 为一般函数 而不是构造函数
public void FinalTest2(final Person p)
{
p.age = 15; //形参被final修饰 函数内只能改变对象属性或方法 引用p不能指向新的对象
//P =new Person("康康",25) ; 错误 不可以改变对象
}
}
public class FinalDemo {
public static void main(String[] args) {
FinalTest f = new FinalTest();
System.out.println(f.N);
//f.N = 24; final修饰的N无法重新定义新值
//final修饰的类类型引用变量 是无法重新建立新的对象的 但是可以改变对象内的内容
//f.P = new Person("黄飞鸿",15);
f.P.name = "张三丰"; //可以改变对象的内容
f.P.showInfo();
Person t = new Person("唐太宗",23);
f.FinalTest2(t);
t.showInfo();
}
}