接口Alarm 中有 open()方法
Door里也有open()方法
要将两个open()方法分开,转成Alarm时调用的open()和作为Door的子类的open()两个方法不同。
解决方案: 创建一个内部类
/**
* 外部类 继承Door
* */
public class AlarmDoor extends Door{
public int i = 0 ;
/**
* 转成Alarm时 构建内部类
* */
public Alarm getAlarm()
{
return new MyDoor(this);
}
/**
* 转回AlarmDoor
* */
public static AlarmDoor getAlarmDoor(Alarm alarm)
{
return ((MyDoor)(alarm)).getAlarmDoor();
}
/**
* 重写Door类open()方法
* */
public void open()
{
System.out.println("Opening");
}
public void gogogo()
{
System.out.println("going");
}
public void count()
{
i++;
System.out.println(i);
}
/**
* 内部类实现接口
* */
private class MyDoor implements Alarm{
private AlarmDoor ad;
/**
* 重写Alarm接口open()方法
* */
public void open()
{
System.out.println("Alarming");
}
public MyDoor(AlarmDoor d)
{
this.ad = d;
}
public AlarmDoor getAlarmDoor()
{
return ad;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
AlarmDoor ad = new AlarmDoor();
ad.open();
ad.gogogo();
ad.count();
//转成 Alarm接口
Alarm alarm = ad.getAlarm();
alarm.open();
//转回 AlarmDoor
ad = AlarmDoor.getAlarmDoor(alarm);
ad.count();
}
}
分享到:
相关推荐
### Java方法继承、方法重载、方法覆盖总结 在Java编程语言中,方法继承、方法重载、方法覆盖是三个非常重要的概念。它们之间既有关联又有区别,掌握这些概念对于深入理解面向对象编程有着至关重要的作用。 #### ...
这个例子展示了Java继承的核心概念,包括: 1. 使用`extends`关键字创建子类。 2. 访问和覆盖父类的方法。 3. 添加子类特有的方法。 4. 多态性的应用。 通过学习这个实例,开发者能够更好地理解和运用Java的继承...
Java 继承是面向对象编程中的一个核心概念,它允许一个类...通过深入理解并灵活运用 Java 的继承和方法重写,可以编写出更具可维护性和扩展性的代码。在实际开发中,合理地利用这些特性,能有效提升软件的质量和效率。
在Java编程语言中,处理同名的方法或变量是一项常见的挑战,尤其是在处理继承、包和类的层次结构时。为了理解如何有效地访问这些同名的成员,我们需要深入理解Java的命名规则、作用域、访问修饰符以及多态性。以下是...
Java 方法继承、方法重载、方法覆盖、小结 Java 编程语言中,方法继承、方法重载、方法覆盖是三个重要的概念,它们在软件开发中发挥着重要作用。 方法继承 方法继承是 Java 编程语言的一种机制,允许一个类继承另...
在这个特定的程序中,我们看到了一个关于Java继承的实例,它演示了子类对象初始化时涉及的各个步骤,包括构造方法、初始化值、父类构造方法以及父类的初始化值。 首先,我们有一个名为`Parent`的父类,它有两个实例...
继承是 Java 中的一种机制,允许一个类继承另一个类的属性和方法。继承的语法是使用 `extends` 关键字,例如 `public class Child extends Parent`。在 Java 中,只支持单一继承,也就是说一个类只能有一个直接父类...
当我们谈论“Java类继承初始化顺序”时,涉及到的关键知识点包括构造器、成员变量的初始化、super关键字以及方法的覆盖。 首先,了解类初始化的顺序至关重要。当创建一个子类实例时,初始化过程遵循以下步骤: 1. ...
- 如果子类和父类有同名的方法,子类的方法会覆盖(override)父类的方法,这称为方法重写。 5. **访问修饰符与继承** - 访问修饰符对继承的影响:`public`成员在任何地方都可访问,`protected`成员在同一个包内...
继承提供了代码的复用性,使得子类可以共享父类的属性和方法,同时还可以添加自己的特定功能。本文将深入探讨类继承的实现、作用以及相关的Java特性。 1. 类继承的实现和作用: 类继承通过使用关键字`extends`来...
Java 继承是面向对象编程中的一个重要概念,它允许一个类(子类)从另一个类(父类)中继承属性和方法,从而实现代码的复用和类的层次结构。这种方式使得子类能够继承父类的特性,同时可以添加自己的特性和功能,而...
在"Java 经典Javapeople继承与多态"的场景中,多态性可能体现在如下情况:假设有一个处理人员的通用方法`process(Person p)`,即使传入的是`Student`或`Teacher`对象,只要它们都继承自`Person`,此方法依然可以正常...
重写是指子类对父类的虚方法给出自己的实现,而方法重载则是在同一类中定义多个同名但参数列表不同的方法。 - **方法的重写(Override)** ```java public class Parent { public void print() { System.out....
### Java继承习题知识点解析 #### 一、基础概念与选择题分析 1. **final修饰的方法** - **题目**: 若在某一个类定义中定义有如下的方法:`final void workDial()`该方法属于 - A. 本地方法 - B. 最终方法 - C....
在Java中,类的继承允许一个类(子类)从另一个类(父类)继承属性和方法,从而实现代码的共享和结构的层次化。这使得子类可以拥有父类的所有非私有属性和方法,同时还能添加自己的特性和功能。 继承的关键字是 `...
- **重载(Overload)**:是指在同一个类中可以有多个同名方法,但参数列表必须不同(参数个数、类型或顺序),这使得我们可以通过不同的参数调用相同名字的方法。 - **重写(Override)**:是指子类继承父类后,...
文章围绕子类继承父类成员的过程、成员变量及方法的赋值、重写、覆盖等问题展开讨论,旨在帮助读者更好地理解Java继承中的重点与难点。 #### 关键词 - 继承机制 - 父类 - 子类 #### 一、超类的属性或方法在继承...
当子类有一个与父类同名但参数列表不同的方法时,这种情况称为方法隐藏,而不是覆盖。 **super 关键字** 1. 在子类中,`super` 关键字用来引用父类的对象,可以访问父类的成员。 2. `super` 也可以用于在子类构造器...
这个压缩包"java继承、多态的简单程序.zip"显然包含了一些示例代码,旨在帮助初学者理解这两个概念。接下来,我们将深入探讨Java中的继承和多态性。 ### 继承(Inheritance) 在Java中,继承允许一个类(子类)...
Java继承是指一个类从另一个类继承成员变量和成员方法的过程。继承是面向对象编程的核心机制之一,它允许我们创建一个新的类,并继承另一个类的成员变量和成员方法,从而简化代码编写和维护。 在Java中,继承是通过...