今天看Java 编程思想的时候遇见一个问题,运行的结果和自己想想的完全不一样。先把代码贴出来!
//CanFight接口 interface Canfight { void fight(); } //ActionCharacter类 class ActionCharacter { public void fight() { System.out.println("Fight from ActionCharacter"); } } //Hero类继承ActionCharacter类实现Canfight接口 class Hero extends ActionCharacter implements Canfight { public void swin() {} public void fly() {} } public class Adventure { //参数为Canfight,向上转型,调用fight方法 public static void t(Canfight x) { x.fight(); } //参数为ActionCharacter类型,向上转型,调用fight方法 public static void w(ActionCharacter x) { x.fight(); } public static void main(String[] srgs) { Hero h = new Hero(); t(h); w(h); } } /*运行结果 Fight from ActionCharacter Fight from ActionCharacter */
在main方法中,调用t方法时,Hero的对象h向上转型为一个Canfight,然后在调用Canfight的fight方法,由于fight方法没有具体的实现,我认为应该不会有输出或者编译器报错。
事实结果应该是 Hero继承ActionCharacter,在运行时,将Hero中所有在ActionCharacter中能用到的东西全部复制到ActionCharacter中,这样在ActionCharacter类中就有了一个fight方法的具体实现。从另外一个角度讲就是在ActionCharacter类中有了接口Canfight中的fight方法的实现。
我自己分析的是这样的,希望大神给出指点。。。
相关推荐
下面是一个简单的Java继承示例: ```java // 父类 public class Animal { protected String name; public Animal(String name) { this.name = name; } public void eat() { System.out.println(name + ...
在Java编程语言中,继承是面向对象编程的一个核心特性,它允许一个类(子类或派生类)从另一个类(父类或基类)继承属性和行为。这个概念极大地提高了代码的重用性和模块化,使得我们可以构建复杂的类层次结构。在...
Java 继承是面向对象编程中的一个重要概念,它允许一个类(子类)从另一个类(父类)中继承属性和方法,从而实现代码的复用和类的层次结构。这种方式使得子类能够继承父类的特性,同时可以添加自己的特性和功能,而...
这个例子展示了Java继承的核心概念,包括: 1. 使用`extends`关键字创建子类。 2. 访问和覆盖父类的方法。 3. 添加子类特有的方法。 4. 多态性的应用。 通过学习这个实例,开发者能够更好地理解和运用Java的继承...
Java继承支持单继承,即一个子类只能直接继承一个父类。但通过接口,我们可以实现多继承的效果,因为一个类可以实现多个接口。 在实际应用中,我们通常会重写父类的方法,以满足子类的特定需求。这是通过使用`@...
在这个特定的程序中,我们看到了一个关于Java继承的实例,它演示了子类对象初始化时涉及的各个步骤,包括构造方法、初始化值、父类构造方法以及父类的初始化值。 首先,我们有一个名为`Parent`的父类,它有两个实例...
1. **类的继承**:在Java中,继承是面向对象编程的重要特性,允许一个类(子类)继承另一个类(父类)的属性和方法。例如,我们可以创建一个`Music`类作为其他音乐相关类的基类。 2. **构造方法**:构造方法用于...
- 类可以实现多个接口,但只能继承一个父类。 **final关键字与继承:** - `final`类不能被继承。 - `final`方法不能被子类覆盖。 - `final`变量一旦初始化就不能改变。 通过这个课件,你将能够深入了解Java继承的...
在本例中,我们将使用Java继承机制编写一个抽象的图形类Shape,并编写两个子类矩形类和三角形类,分别实现计算面积和显示面积的方法。 Abstract Class Shape 首先,我们定义一个抽象的图形类Shape,它有两个抽象...
Java继承作业.pdf 在本文中,我们将讨论Java继承的基本概念和实现方法,並以三个实例来演示继承的应用。 一、new A 和 A a=new A()的区别 在Java中,new关键字用于创建对象,而A a=new A()是将对象赋值给变量a。...
- Java语言实行单一继承,即一个类只能直接继承一个父类。这样有助于避免复杂的继承关系导致的混乱。如果需要多重继承的效果,可以使用接口(interface)。 3. **构造器与继承** - 子类在实例化时,会先调用父类...
1. 单继承:Java只支持单继承,即一个类只能继承一个超类。 2. 多层继承:Java支持多层继承,即一个类可以继承另一个类,该类又可以继承另一个类,以此类推。 3.继承变量和方法:子类继承了超类的成员变量和成员方法...
Java 采用单一继承策略,即一个类只能直接继承一个父类,但可以通过接口实现多重继承的效果。 3. **访问权限**: - **公有(public)**:子类可以访问父类的所有公有成员。 - **保护(protected)**:子类在同一...
在这个"Java继承实例源代码"的压缩包中,包含的文件可能提供了关于Java继承和多态性的实际应用示例。 首先,我们来看“继承”这一概念。在Java中,通过使用关键字`extends`,一个类可以声明其为另一个类的子类。...
下面我们将深入探讨JAVA继承的相关知识点。 1. **继承的概念**: - 继承体现了类之间的层次结构,子类继承父类,表示子类是父类的一个特例,具备父类的所有特性但可能有所扩展。 - Java中声明继承使用`extends`...
实验中提到的“一个类只能继承一个父类”是Java单继承特性,但Java支持接口的多实现,可以模拟多重继承的效果。在创建子类时,父类的构造函数会先被执行,确保父类的初始化,然后执行子类的构造函数。 总的来说,这...
2. 尽管Java在类继承上是单继承的,但可以通过实现多个接口来实现多重继承的效果,接口是Java中另一种形式的继承,它允许一个类实现多个接口。 3. 子类继承了父类的所有非私有成员变量和方法,但不包括构造函数。...
java继承学习教案.pptx
java 继承和多态PPT教程
### Java继承与多态知识点详解 #### 一、引言 在面向对象编程语言中,继承和多态是非常重要的概念。它们提供了强大的机制来管理代码的复杂性,并且能够有效地复用现有代码。本文将详细介绍Java中的继承和多态概念...