A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Demo8_Final{
    public static void main(String[] args) {
        //System.out.println("Hello World!");
        /*
        final int num = 12;
        num = 12;                                        //报错:是被赋值一次,而不是不改变其值
        */
        Son s = new Son();
        s.print();

        final Person p = new Person("张三",23);
        //p = new Person("李四",24);                    //对象即地址值不能修改,但对象中的属性值是可以修改的
        p.setName("王五");
        p.setAge(25);
        System.out.println(p.getName()+">>>" + p.getAge());


        method(10);                                        //10
        method(20);                                        //20,基本数据类型使用完后弹栈,不会报错


        Demo d = new Demo();
        d.print();
    }

    public static void method(final int x) {
        System.out.println(x);
    }
}
/*
* A:final概述
* B:final修饰特点
    * 修饰类,类不能被继承
    * 修饰变量,变量就变成了常量,只能被赋值一次
    * 修饰方法,方法不能被重写
* C:案例演示
    * final修饰特点
*/

/*
final class Father{
    public void print() {
        System.out.println("访问底层数据资源");
    }
}

class Son extends Father{
    public void print() {
        System.out.println("哈哈,底层资源已经被修改");
    }
}
*/

class Son{
    //int num = 10;
    final int NUM = 10;                                        //常量命名规范,如果是一个单词所有字母大写,如果是多个单词,加下划线并大写
    //public static final int NUM = 10;                        //final 修饰变量叫常量,长与public static搭配
    public void print() {
        //num = 20;
        //NUM = 20;
        //System.out.println(num);
        System.out.println(NUM);
    }
}
/*
final修饰的类不可以被继承,但继承其他类是可以的
*/
final class A extends B{

}

class B{
}


/*
* A:案例演示
    * 方法内部或者方法声明上都演示一下(了解)

    * 基本类型,是值不能被改变
    * 引用类型,是地址值不能被改变,对象中的属性可以改变
*/

class Person{
    private String name;                                //姓名
    private int age;                                    //年龄

    public Person() {}                                    //空参构造

    public Person(String name,int age) {                //有参构造
        this.name = name;
        this.age  = age;
    }

    public void setName(String name) {                    //设置姓名
        this.name = name;
    }

    public String getName() {                            //获取姓名
        return name;
    }

    public void setAge(int age) {                        //设置年龄
        this.age = age;
    }

    public int getAge() {                                //获取年龄
        return age;
    }

    public void eat() {                                    //吃饭
        System.out.println("吃饭");
    }

}

/*
* A:final修饰变量的初始化时机
    * 显示初始化
    * 在对象构造完毕前即可
*/

class Demo{
    //final int num = 10;                                                //显示初始化值时
    final int num;                                                        //成员变量的默认初始化值是无效值

    public Demo() {                                                        
        num = 10;                                                        //类的对象被创建时调用空参构造时,初始化值,此时变量还未被使用
    }
    public void print() {
        System.out.println(num);
    }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马