`
sun201200204
  • 浏览: 294460 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

类的清理顺序(方法的执行顺序)

    博客分类:
  • java
 
阅读更多
package com.payton.polymorphism;

class Characteristic {
    private String s;
    
    Characteristic(String s){
        this.s = s;
        System.out.println("Create Characteristic " + s);
    }
    
    protected void dispose() {
        System.out.println("finalizing Characteristic.");
    }
}

class Description {
    private String s;
    
    Description(String s){
        this.s = s;
        System.out.println("Create Description " + s);
    }
    
    protected void dispose() {
        System.out.println("finalizing Description.");
    }
}

class LivingCreature {
    private Characteristic p = new Characteristic("is alive");
    private Description t = new Description("Basic Living Creature");
    
    LivingCreature(){
        System.out.println("LivingCreature()");
    }
    
    protected void dispose() {
        System.out.println("LivingCreature dispose.");
        t.dispose();
        p.dispose();
    }
}

class Animal extends LivingCreature {
    private Characteristic p = new Characteristic("has heart");
    private Description t = new Description("Animal not vegetable");
    
    Animal(){
        System.out.println("Animal()");
    }
    
    protected void dispose() {
        System.out.println("Animal dispose.");
        t.dispose();
        p.dispose();
        super.dispose();
    }
}

class Amphibian extends Animal {
    private Characteristic p = new Characteristic("can live in the water");
    private Description t = new Description("Both water and land");
    
    Amphibian(){
        System.out.println("Amphibian()");
    }
    
    protected void dispose() {
        System.out.println("Amphibian dispose.");
        t.dispose();
        p.dispose();
        super.dispose();
    }
}

public class Frog extends Amphibian{
    private Characteristic p = new Characteristic("Croaks");
    private Description t = new Description("Eats Bugs");
    
    Frog(){
        System.out.println("Frog()");
    }
    
    protected void dispose() {
        System.out.println("Frog dispose.");
        t.dispose();
        p.dispose();
        super.dispose();
    }

    public static void main(String[] args) {
        Frog frog = new Frog();
        System.out.println("Bye!");
        frog.dispose();
    }

}

结果:
Create Characteristic is alive
Create Description Basic Living Creature
LivingCreature()
Create Characteristic has heart
Create Description Animal not vegetable
Animal()
Create Characteristic can live in the water
Create Description Both water and land
Amphibian()
Create Characteristic Croaks
Create Description Eats Bugs
Frog()
Bye!
Frog dispose.
finalizing Description.
finalizing Characteristic.
Amphibian dispose.
finalizing Description.
finalizing Characteristic.
Animal dispose.
finalizing Description.
finalizing Characteristic.
LivingCreature dispose.
finalizing Description.
finalizing Characteristic.


方法的执行顺序和类的调用顺序相反。
先执行继承类的方法,再执行派生类的方法,最后执行基类的方法。
分享到:
评论

相关推荐

    python中多个装饰器的执行顺序详解

    装饰器是程序开发中经常会用到的一个功能,也是...今天讲一下python中装饰器的执行顺序,以两个装饰器为例。 装饰器代码如下: def wrapper_out1(func): print('--out11--') def inner1(*args, **kwargs): print("-

    网站多个栏目的广告系统

    7、在对广告位进行清理操作时,可以选择删除或保留当前广告位两种清理类型,同时执行相关清理操作 8、在对广告条进行清理操作时,可以选择删除或保留当前广告条两种清理类型,同时执行相关清理操作 9、引入广告位...

    忠网广告管理系统ZonGG v1.2

    随时执行暂停、激活、修改、清理等操作 7、在对广告位进行清理操作时,可以选择删除或保留当前广告位两种清理类型,同时执行相关清理操作 8、在对广告条进行清理操作时,可以选择删除或保留当前广告条两种清理类型,...

    Java应用中使用ShutdownHook友好地清理现场

    在线上Java程序中经常遇到进程程挂掉,一些状态没有正确的保存下来,这时候需要在JVM关掉的时候执行一些清理现场的代码。Java中得ShutdownHook提供了比较好的方案。  JDK在1.3之后提供了Java Runtime....

    windows端批量生成大量文件的脚本

    它们可以包含一系列的命令,这些命令按照顺序逐行执行。批处理脚本可以执行各种操作,如创建、复制、删除文件和文件夹,运行程序,修改系统设置等。 批处理脚本的作用主要有以下几个方面: 自动化任务:通过编写...

    threadtear:多功能Java去模糊工具套件

    线撕 Threadtear是用于Java的多功能去模糊工具。 Android应用程序支持即将推出(目前...如果准备就绪,请单击“运行”按钮,它们将按顺序执行。 警告 使用此工具的风险自负。一些执行使用已实现的ClassLoader来运行j

    pyjanitor:清理用于数据清理的API。 R包Janitor的Python实现

    pyjanitor最初是R程序包的一个端口,已从一组便捷的数据清理例程演变为使用范式的实验。 数据预处理通常由一系列步骤组成,这些步骤涉及将原始数据转换为可理解/可用的格式。 这些步骤系列必须按一定顺序运行才能...

    getdata-project:获取和清理数据课程项目

    获取和清理数据项目 这个 repo 包含一个脚本: run_... 在脚本中,这些步骤按顺序执行:1、4、2、3、5。 要执行脚本,请下载,展开 zip 文件,然后将run_analysis.R和提取的UCI HAR Dataset目录放在同一目录中。 运行

    照片整理工具(Easy Photo Sorter) 3.1.0.40汉化绿色版

    运行环境:WinXP/win7/ 软件语言:简体中文 软件类型:汉化软件 授权方式:免费版 软件大小:2.23 MB 更新时间:2011-12-10 ...首次运行请执行"install.bat"进行配置并自动启动程序,不用的话执行"uninst.bat"进行清理.

    Scotch_Recommender:这是我作为热情项目提出的非常简单的苏格兰威士忌推荐书

    苏格兰人推荐:我的激情项目该项目于3/26/2021发布,旨在代表最低可行产品,因此还没有太多的绒毛/火花。... 代码1个01_Clean_and_EDA.ipynb 1个在此笔记本中,我清理数据并执行一些简单的EDA。 代码1个02_K_

    忠网广告管理系统ZonGG 1.3 build 20120415.rar

    7、在对广告位进行清理操作时,可以选择删除或保留当前广告位两种清理类型,同时执行相关清理操作 8、在对广告条进行清理操作时,可以选择删除或保留当前广告条两种清理类型,同时执行相关清理操作 9、引入广告位...

    C#5.0本质论第四版(因文件较大传的是百度网盘地址)

    5.6.6 为取值方法和赋值方法指定访问修饰符 160 5.6.7 属性作为虚字段使用 161 5.6.8 属性和方法调用不允许作为ref或out参数值使用 163 5.7 构造器 164 5.7.1 构造器的声明 164 5.7.2 默认...

    coursera-getdata-012-assignment:获取和清理数据的作业 Coursera 课程

    Coursera 获取和清理数据类作业此脚本处理来自测试的。 它负责将本实验生成的多个文件中的数据拼接成...脚步脚本的执行按顺序执行以下操作: 从训练/测试加载数据集。 使用来自“features.txt”的标签对列进行注释。 删

    Adobe CS5卸载软件使用说明

    Adobe不是不通情达理,它在官方解释中是这样的(以下大意):假如遇到卸载不干净或系统问题出错导致无法卸载干净,官方重装会出错,唯一的解决办法顺序如下:先执行系统“添加删除”窗口,标准卸载——运行Windows官方...

    编程思想下篇

    第4章 控制执行流程 4.1 true和false 4.2 if-else 4.3 迭代 4.3.1 do-while 4.3.2 for 4.3.3 逗号操作符 4.4 Foreach语法 4.5 return 4.6 break和 continue 4.7 臭名昭著的“goto” 4.8 switch 4.9 总结 第5章 初始...

    忠网广告管理系统ZonGG v1.3 12.4.15.rar

    7、在对广告位进行清理操作时,可以选择删除或保留当前广告位两种清理类型,同时执行相关清理操作 8、在对广告条进行清理操作时,可以选择删除或保留当前广告条两种清理类型,同时执行相关清理操作 9、引入广告位...

    深入理解python中的atexit模块

    atexit 按注册的相反顺序执行这些函数; 例如注册A、B、C,在解释器终止时按顺序C,B,A运行。 Note:如果程序是非正常crash,或者通过os._exit()退出,注册的退出函数将不会被调用。 官方文档:...

    Thinking in java4(中文高清版)-java的'圣经'

    4.4 Foreach语法 4.5 return 4.6 break和 continue 4.7 臭名昭著的“goto” 4.8 switch 4.9 总结 第5章 初始化与清理 5.1 用构造器确保初始化 5.2 方法重载 5.2.1 区分重载方法 5.2.2 涉及基本类型的重载 5.2.3 以...

    handleError - 通用错误处理函数:具有注册自动清理操作能力的通用错误处理函数-matlab开发

    handleError 是一个通用的错误处理函数。 用户可以注册在出现错误时自动激活的清理操作。 如果发生错误并调用了 handleError,则会在命令窗口中显示... 返回的ACTIONIDX是顺序清理操作索引。 ERRMSG = handleError('

Global site tag (gtag.js) - Google Analytics