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 {
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()
Lunch()
PortableLunch()
Bread()
Cheese()
Lettuce()
Sandwich()
用其他类创造一个复杂的类,每个类都有自己的构造器。Sandwich类反映三个构造器,如果有Object,就有四个,这里没有。
对象调用构造器遵循以下顺序:
1、调用基类构造器;首先是根的构造器,然后是下一层的派生类的构造器,直到最底层的构造器为止。
2、按声明顺序调用成员的初始化
3、调用派生类构造器的主体。
分享到:
相关推荐
Java中构造器内部的多态方法的行为实例分析是Java编程语言中一个非常重要的知识点,本文将详细介绍Java中构造器内部的多态方法的行为,结合实例形式分析了java构造器内部多态方法相关原理、功能及操作技巧。...
5. 构造器的多态:虽然构造器不能被继承,但是子类可以通过super关键字调用父类的构造器,实现不同子类在初始化阶段的不同行为。 6. 接口与多态:接口是实现多态的一种重要手段,它定义了一组方法,任何实现该接口...
- **自动调用父类构造器:** 如果子类没有显式地调用父类的构造器,则会自动调用父类的默认构造器。 - **实例化对象:** 构造器的主要目的是用于初始化对象的初始状态。 #### 五、多态 (Polymorphism) **定义:** ...
子类构造器的第一行通常是`super(parameters)`,用于调用特定的父类构造器。 8. **访问父类的私有成员**: 虽然父类的私有成员不能直接在子类中访问,但可以通过友元类(friend class)或者使用内部类等方式实现...
- 子类构造器中如果没有明确地调用父类的构造器,则默认调用父类无参构造器。 - 如果需要调用父类有参构造器,则需使用`super`关键字显式指定。 - 示例: ```java public class A { public A() { System.out....
当子类继承父类时,需要通过显式调用父类的构造器来初始化父类中的数据成员。这通常通过`super()`关键字完成。 **2.5 多层继承** Java支持多层继承,即一个类可以从另一个类继承,而这个父类本身也可以从另一个...
* 调用构造器:类名 对象名 = new 构造器(实参 1....实参 n); 匿名对象 * 匿名对象:new 构造器().方法名(); * 注意:使用匿名对象调用方法的时候,这个方法只能被调用一次。 方法的重载 * 方法名相同,参数...
"多态描述飞行器"这个项目可能是一个C#课程或考试中的实例,目的是让学生通过实际操作理解并运用多态性。在这一项目中,我们可能会看到以下几个关键知识点: 1. **类与对象**:首先,我们需要创建类来描述飞行器,...
在多态场景下,如果父类有一个公共构造器,子类可以通过super关键字来调用父类的构造器,确保父类部分的状态得以初始化。 - 然而,构造器不能被重写(override),这意味着多态性不适用于构造器。每个子类都有自己...
在子类构造器中,通过`super()`调用父类的构造器,确保父类的初始化工作得以完成。例如,`Topic`类的构造器中`super(topicId, boardTd)`就是调用了父类`Tip`的构造器。 接下来,我们讨论**多态**。多态是指同一种...
- 构造盒的改进:通过引入多个候选单向函数(如线性同余随机数生成器、带进位加法生成器等),结合网络数据包字节数进行组合,形成一个新的强单向函数。 - 网络数据包的应用:在网络通信中,通信双方可以基于上传和...
- **方法调用指令**:JVM提供了四种方法调用指令,分别为`invokestatic`(静态绑定)、`invokespecial`(用于私有方法、构造函数和父类方法)、`invokevirtual`(动态绑定)和`invokeinterface`(接口方法调用)。...
同时,这些类可能会有私有数据成员,以及公有构造函数和访问器方法,体现封装特性。如果文件中还有其他类,可能是为了展示如何通过继承和多态构建复杂的类层次结构。 通过学习和实践这些例子,开发者能够更好地理解...
在创建子类对象时,首先会调用父类的构造器,然后再执行子类的构造器。静态成员和静态代码块不涉及继承,它们在类加载时初始化,而实例成员和构造器在对象实例化时初始化。例如,在`Dog`类的例子中,`DogProfile`...
// 构造器和其他方法... @Override public void draw() { Graphics2D g2d = (Graphics2D) graphics; g2d.fillRect(x, y, width, height); } } public class Triangle extends Shape { private Point[] ...
默认情况下,子类构造器会调用父类无参的构造器。如果需要调用有参的构造器,则需要使用 `base` 关键字显式指定: ```csharp class Car { public Car(int i) { } } class TrashCar : Car { public TrashCar(int ...
此外,Java还支持构造器,用于初始化对象的状态,以及getter和setter方法,实现数据的读取和修改。 **继承**是面向对象编程的另一个关键特性,它允许一个类(子类)从另一个类(父类)继承属性和行为。这有助于代码...
通过继承和多态,你可以为这些泛型集合中的元素定义自定义的行为,比如自定义比较器或扩展方法。 例如,假设有一个`Employee`类,你可以创建一个`EmployeeList`类继承自`List<Employee>`,并添加一些特定于员工的...
如果试图使用带参数的构造器创建 `Demo` 对象,例如 `new Demo("Good")`,则需要在 `Demo` 类中提供对应的构造器来传递参数。在给定的代码中,`Demo` 类没有定义任何构造器,所以第 15 行会出错,答案是 D。 总结:...