15:final关键字

爱⌒轻易说出口 提交于 2020-02-01 10:46:30

1.final关键字概念与四种用法

package cn.itcast.day10.Demo0.cn.itcast.day10.Demo1;
/*
final关键字代表最终,不可改变的。
常见的四种用法:
1.可以修饰一个类
2.还可以用来修饰一个方法。
3.还可以用来修饰一个局部变量。
4.还可以用来修饰一个成员变量。
*/
public class Demo01Final {
}

2.final关键字用来修饰类

package cn.itcast.day10.Demo0.cn.itcast.day10.Demo1;
/*
当final关键字用来修饰一个类的时候,格式:
public final class 类名称{
//....
}
含义:当前这个类不能有任何的子类。
注意:一个类如果是final修饰的,那么其中所有的成员方法都无法进行覆盖重写。
*/
public final class MyClass  extends Object{
    public void method(){
        System.out.println("方法执行!1");
    }
}

3:final关键字用来修饰成员方法

Fu类

package cn.itcast.day10.Demo0.cn.itcast.day10.Demo1;
/*
当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写。
格式:
修饰符 final 返回值类型 方法名称(参数列表){
//方法体
}
注意事项:
对于类,方法来说,abstract关键字和final关键字不能同时使用,因为矛盾
*/
public abstract class Fu {
    public final void method(){
        System.out.println("父类方法执行");
    }
    public abstract /*final */void methodAbas();
}

Zi类

package cn.itcast.day10.Demo0.cn.itcast.day10.Demo1;

public class Zi extends Fu {
    //错误写法,不能覆盖重写父类当中final的方法
   /* @Override
    public void method(){
        System.out.println("子类覆盖重写父类的方法!");
    }*/
}

4.final关键字用来修饰局部变量

Student类

package cn.itcast.day10.Demo0.cn.itcast.day10.Demo1;

public class Student {
    private String name;

    public Student(String name) {
        this.name = name;
    }

    public Student() {
    }

    public String getName() {
        return name;
    }

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

主类

package cn.itcast.day10.Demo0.cn.itcast.day10.Demo1;
/*
final关键字代表最终,不可改变的。
常见的四种用法:
1.可以修饰一个类
2.还可以用来修饰一个方法。
3.还可以用来修饰一个局部变量。
4.还可以用来修饰一个成员变量。
*/
public class Demo01Final {
    public static void main(String[] args) {
        int num1 = 10;
        System.out.println(num1);//10
        num1 =20;
        System.out.println(num1);//20

        //一旦使用final用来修饰局部变量,那么这个变量就不能进行更改
        final int num2 = 200;
        System.out.println(num2);//200
        //num2= 250;//错误写法,不能更改
        //num2 = 200;//错误写法

        //正确写法,只能保证有唯一一次赋值即可。
        final  int num3 ;
        num3 = 30;

        //对于基本数据类型来说,不可变的是变量当中的数据不可以改变。
        //对于引用数据类型来说,不可变的是变量当中的地址值不可以改变。
        Student student = new Student("小明");
        System.out.println(student);
        System.out.println(student.getName());//小明
        student = new Student("小红");
        System.out.println(student);
        System.out.println(student.getName());//小红
        final Student student1 = new Student("小王");
        /*student1 = new Student("小李");//错误写法!,final的引用类型变量,其中地址不可改变。*/
        student1.setName("小李");
        System.out.println(student1.getName());
}
} 

在这里插入图片描述

5:final关键字用来修饰成员变量

package cn.itcast.day10.Demo0.cn.itcast.day10.Demo1;
/*
对于成员变量来说,如果使用final 关键字修饰,那么这个变量也照样是不可变de
1.由于成员变量具有默认值,所以用了final之后必须手动赋值,不会再给默认值。d
2.对于final的成员变量,要么使用直接赋值,要么通过构造方法赋值。二者选其一
3.必须保证类当中所有重载的构造方法,都最终会对final的成员变量进行赋值。
*/
public class Person {
    private final String name;

    public Person(String name) {
        this.name = name;
    }

    public Person() {
        name ="小红";
    }

    public String getName() {
        return name;
    }

   /* public void setName(String name) {
        this.name = name;
    }*/
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!