zoukankan      html  css  js  c++  java
  • final finally finalize 的区别

    1.final

    final修饰类,说明这个类不能被继承,是以个顶级类。

    final修饰变量,说明这个变量是常量。

    final修饰方法,表示这个方法不能被重写,不过可以冲在final方法。

    比如有个基类Person,里面有一个public final void eat()方法,可以在Person类中重载同名方法,比如public void eat(String name,int age)。假如有一个子类Student,那么在Student中可以override父类的非final方法,但是不能override final方法。

    Person

    View Code
    package test2;
    
    public class Person {
        private String name;
        private int age;
        
        public final void eat()
        {
            System.out.println("this is in person class");
        }
        
        public void eat(String name,int age)
        {
            
        }
        
    }

    Student

    View Code
    package test2;
    
    public class Student extends Person {
    
        @Override
        public void eat(String name, int age) {
            // TODO Auto-generated method stub
            super.eat(name, age);
        }
    }

    常见的final方法就是Object类累中的wait()和notify()方法。

    2.finally

    finally是关键字,在异常处理中,try子句中执行需要运行的内容,catch子句用于捕获异常,finally子句表示不管是否发生异常,都会执行。finally可有可无。但是try...catch必须成对出现。

    3.finalize() 

    finalize() 方法名,Object类的方法,Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象进行调用。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的子类覆盖 finalize() 方法以整理系统资源或者执行其他清理操作。

    代码实例:

    View Code
    class Person
    {
        private String name;
        private int age;
    
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String toString()
        {
            return "姓名:"+this.name+",年龄:"+this.age;
        }
        
        public void finalize() throws Throwable{//对象释放空间是默认调用此方法
            System.out.println("对象被释放-->"+this);//直接输出次对象,调用toString()方法
        }
        
    }
    
    public class SystemDemo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            Person per=new Person("zhangsan",30);
            per=null;//断开引用,释放空间
            //方法1:
            System.gc();//强制性释放空间
            //方法2:
    //        Runtime run=Runtime.getRuntime();
    //        run.gc();
        }
    
    }
  • 相关阅读:
    Eclipse编辑JS响应慢,复制粘贴卡顿的解决方案
    Oracle 通过字段名查询其所在的表
    spring mvc流转控制说明
    Iterable(迭代器)的用法
    spring事务配置详解
    创建第一个Hiberntae工程
    spring3.0注解
    Ext中Grid重新load设置URL
    spring框架设计理念(上)
    Eclipse快捷键大全
  • 原文地址:https://www.cnblogs.com/xwdreamer/p/2454178.html
Copyright © 2011-2022 走看看