zoukankan      html  css  js  c++  java
  • final关键字

    1.final应用场景:
    1.1 一个永不改变的编译时常量。
    1.2 一个运行时被改变的值,并且不希望其值被改变。
    2.final修饰变量、方法和类
    2.1 final修饰变量:修饰基本类型变量时,变量的值无法改变。修饰引用变量时,变量的指向地址无法改变,但变量指向的对象是可以改变的。
    2.2 final修饰方法:只有在想明确禁止覆盖时,才将方法设置为final的。private默认为final的,显式添加没有任何意义。
    2.3 final修饰类:此时不容许类被继承,标志该类方法不可以被覆盖。
    package extends1.one;
    class Sub extends Sup{
        public void funSup(){
            System.out.println("sub funSup...");
        }
        public void finalPrivate(){
            System.out.println("sub finalPrivate...");
        }
        public void fun(){
            System.out.println("sub fun...");
        }
    }
    
    public class Sup{
        public void funSup(){
            System.out.println("sup funSup...");
        }
        //该方法不能在Sup子类中覆盖,否则编译报错
        public final void finalSup(){
            System.out.println("sup finalSup...");
        }
        //子类中可以有与该方法相同的方法,但是两个方法是没有任何关系的,
        //private方法对外部而言可以看做不存在包括其子类
        private void finalPrivate(){
            System.out.println("sup finalPrivate...");
        }
        public static void main(String[] args) {
            Sup s=new Sub();
            s.funSup();
            //private方法是无法与外部方法之前有任何联系的,
            //即使子类中含有finalPrivate()方法,但和父类方
            //法没有任何关系,对父类而言该方法没有被覆盖。
            s.finalPrivate();
            //The method fun() is undefined for the type Sup
            //s.fun();
            ((Sub)s).fun();
            ((Sub)s).finalPrivate();
            /* Output:
             * sub funSup...
             * sup finalPrivate...
             * sub fun...
             * sub finalPrivate...
             */
        }
    }
    3.用final来修饰引用类型的意义不大,因为在使用时控制的只是引用指向地址不变,并不能控制引用指向对象保持不变。

  • 相关阅读:
    怎么用代码弹回 UITableView 中左滑出来的删除按钮
    android 利用 aapt 解析 apk 得到应用名称 包名 版本号 权限等信息
    Missy
    html5 websocket + node.js 实现网页聊天室
    android 代码混淆示例
    android volley 发送 POST 请求
    android viewpager 拿到当前显示的 fragment 的实例
    android actionbar viewpager 实现类微信主界面布局
    (转)初学Git及简单搭建git服务器和客户端
    error: Cannot find OpenSSL's <evp.h> Mac
  • 原文地址:https://www.cnblogs.com/wjc920/p/9256170.html
Copyright © 2011-2022 走看看