package com.payton.polymorphism;
class Meal {
Meal(){
System.out.println("Meal()");
}
}
class Bread {
Bread(){
System.out.println("Bread()");
}
}
class Cheese {
Cheese(){
System.out.println("Cheese()");
}
}
class Lettuce {
Lettuce(){
System.out.println("Lettuce()");
}
}
class Lunch extends Meal {
private Bread b = new Bread();
Lunch(){
System.out.println("Lunch()");
}
}
class PortableLunch extends Lunch {
PortableLunch(){
System.out.println("PortableLunch()");
}
}
public class Sandwich extends PortableLunch{
private Bread b = new Bread();
private Cheese c = new Cheese();
private Lettuce l = new Lettuce();
public Sandwich(){
System.out.println("Sandwich()");
}
public static void main(String[] args) {
new Sandwich();
}
}
Meal()
Bread()
Lunch()
PortableLunch()
Bread()
Cheese()
Lettuce()
Sandwich()
调用顺序:
1、调用基类的构造函数。(先创建根,下一级派生类,....直到最后一个继承类的构造函数)
2、成员对象按照其声明顺序进行初始化。
3、执行继承类的构造函数。
分享到:
相关推荐
### Java类执行顺序详解 Java类的执行顺序是理解Java程序行为的关键,它涉及类的加载、初始化以及构造过程中的各种细节。以下是对类执行顺序的深入解析,基于标题“类执行顺序小结”和描述“关于Java类的执行顺序...
Java类的执行顺序是编程过程中一个非常重要的概念,特别是在深入理解和优化代码性能时。本文将详细探讨Java类的加载、初始化、执行等步骤,并通过实例分析阿里面试中可能涉及的相关问题,结合流程图帮助理解这一过程...
派生类构造函数和析构函数的执行顺序 在面向对象编程中,继承是非常重要的一个概念。派生类可以继承基类的成员,实现代码的重复利用。但是,基类的构造函数和析构函数不能被继承。如果在派生类中需要对新增加的成员...
在Java编程中,控制台展示执行顺序是一项基本但至关重要的技能。这关乎到代码的可读性、调试能力和逻辑理解。在"控制台展示执行顺序"这个主题中,我们将深入探讨如何通过Java来实现这一点,以及它在实际编程中的应用...
它提供了一个丰富的注解系统,用于控制测试的执行顺序,以及对测试方法和测试类进行组织和管理。下面我们将详细介绍TestNG注解方法的执行顺序,以及相关的关键知识点。 首先,了解TestNG的测试执行顺序是非常重要的...
此外,`ApplicationContextInitializer`支持`Ordered`接口,这意味着我们可以指定初始化器的执行顺序。通过定义`@Order`注解,可以控制初始化器的优先级,数值越小,执行越早。这使得开发者能够精确控制初始化过程中...
构造函数和析构函数在派生类中的执行顺序须知 在面向对象编程中,构造函数和析构函数是非常重要的概念,特别是在派生类中,它们的执行顺序直接影响了类的正确初始化和清理。在本文中,我们将讨论构造函数和析构函数...
在探讨继承中子类与父类构造函数及静态块的执行顺序时,我们首先需要理解构造函数和静态块的基本概念及其在Java中的作用。构造函数主要用于初始化对象的状态,而静态块则是在类加载到内存中时执行的一段代码,通常...
本文档详细解读了pytest fixtures的执行顺序及其影响因素,主要分为两个方面:作用范围(scope)和依赖关系(dependencies)。 首先,fixture的执行顺序与它的作用范围(scope)密切相关。作用范围决定了fixture的...
在深入探讨Java类的完整构造执行顺序之前,我们先来明确一下Java中构造函数与类初始化的基本概念。构造函数在创建对象时被调用,用于初始化该对象的状态。而类初始化则是指在类首次被使用时,JVM执行的一系列初始化...
在iOS开发中,理解方法执行顺序是至关重要的,这关系到程序的运行逻辑和性能优化。本文将深入探讨iOS中的方法执行流程,主要基于Objective-C的运行时(Runtime)系统,因为这是iOS方法调用的核心机制。 首先,我们...
这篇博客“Struts2 拦截器的执行顺序(二十九)”可能探讨了Struts2拦截器链的工作原理和它们的执行顺序,这对于理解Struts2的内部机制至关重要。 首先,让我们深入理解Struts2的拦截器。拦截器是在Action调用前后...
C#编程语言中,类和对象的构造及方法执行顺序是一个关键的概念,尤其在涉及到继承、构造函数、虚方法和重写时。以下是对给定场景的详细解释: 1. **场景一:只实例化父类** 当我们创建一个`A`类型的对象时,只会...
初始化块的执行顺序同样遵循它们在类体中出现的顺序。 #### 示例代码分析 为了更好地理解类继承初始化顺序的概念,下面通过一段示例代码来进行详细分析: ```java class Base { public Base() { System.out....
本文将详细解析Java类的基本运行顺序,包括加载、初始化、执行等阶段,以及相关工具的运用。 首先,我们从类的生命周期开始。一个Java类的生命周期可以分为以下几个阶段: 1. **加载(Loading)**:当Java虚拟机...
本文将深入探讨EventLoop的工作原理、执行顺序以及相关的宏任务和微任务。 首先,理解EventLoop的核心是JavaScript的单线程执行模型。由于JavaScript引擎在浏览器环境中主要是用于处理用户交互,为了不阻塞主线程,...
下面将详细阐述这三个概念及其执行顺序,以及如何通过编程进行交互。 1. 母版页(Master Page) 母版页是ASP.NET中一种特殊的页面,用于定义应用程序的通用布局和导航结构。它定义了全局的HTML结构,如头部、页脚、...
先静态代码块,然后构造代码块,再是构造方法,然后方法里面的代码块按顺序执行。 子类继承父类的时候,先执行父类的静态代码块,然后子类的静态代码块,然后父类的构造代码块和构造方法,再是子类的构造代码块和...
/*大体上顺序是这样的:(也可以说是优先级,同一级的按顺序执行) 1 静态变量,静态代码块(类加载时执行,类不加载不执行) 2 实例变量,实例代码块(创建对象时才执行,不创建对象不执行) 3 构造函数,...