//演示引用变量的多态特征
//以说明把接口和实现分离的多态特征增加了程序的可扩展性
import static com.futa.Print.*;
class Instrument {
void play(int n) {print("Instrument.play()"+n);}
String what() {return "Instrument";}
void adjust() {print("Adjusting Instrument");}
}
class Wind extends Instrument {
void play(int n) {print("Wind.play()"+n);}
String what() {return "Wind";}
void adjust() {print("Adjusting wind");}
}
class Percussion extends Instrument {
void play(int n) {print("Percussion.play()"+n);}
String what() {return "Percusssion";}
void adjust() {print("adjusting Percussion");}
}
class Stringed extends Instrument {
void play(int n) {print("Stringde.play()"+n);}
String what() {return "Stringde";}
void adjust() {print("adjusting Stringed");}
}
class Brass extends Wind {
void play(int n) {print("Brass.play()"+n);}
void adjust() {print("adjusting Brass");}
}
class Woodwind extends Wind {
void play(int n) {print("Woodwind.play"+n);}
String what() {return "Woodwind";}
}
public class Music {
public static void tune(Instrument i) {
i.play(1);
}
public static void tuneAll(Instrument[] e) {
for(Instrument i : e)
tune(i);
}
public static void main(String[] args) {
Instrument[] orchestra = {
new Wind(),
new Percussion(),
new Stringed(),
new Brass(),
new Woodwind()
};
tuneAll(orchestra);
}
}
发表评论
-
1.选区
2009-07-18 17:09 5971 -
学习异常处理
2009-02-03 03:38 957导致程序运行不正常的 ... -
多态 向上转型 动态绑定
2009-02-02 17:43 9671.成员变量和静态方法不具有多态性,因为它们都是编译时绑定的。 ... -
复用类——组合,代理,还是继承?
2009-02-02 17:12 1022类的复用基本是三种方式,组合,代理,继承。为了同样 ... -
阶段总结
2009-02-02 01:21 658最近在看JAVA编程思想和 ... -
构造器调用顺序
2009-02-02 01:19 787/*演示构造器的调用顺序 *一,调用基类构造器,反复递归到根, ... -
类之间的关系
2009-02-02 01:18 682一些简单的类设计技巧 ... -
简单类设计技巧
2009-02-02 01:18 725一些简单的类设计技巧 ... -
打包问题?
2009-02-02 01:17 618关于打包问题: 将类文件打包后,编译成功后。 如果把cla ... -
特殊变量this
2009-02-02 01:16 667特殊变量this A this ... -
方法参数总结
2009-02-02 01:15 754方法参数: java里使用值调用,方法得到的是所以参数值的一个 ... -
构造器与初始化
2009-02-02 01:11 774//演示内容如下 // 重载构造器 // 用this()调用另 ... -
JDK和环境变量的说明
2009-02-02 01:08 1303首先,java是个编程语言。 其次,SUN推出了3个java ...
相关推荐
通过实现一个或多个接口,类声明了它支持哪些方法,这使得任何实现了该接口的类都可以被接口类型的变量引用。接口多态强调的是行为的一致性,而不是具体的实现细节。 4. **抽象类与多态**:抽象类是不能被实例化的...
一个`Father`类型的引用变量既可以指向`Father`类型的对象,也可以指向`Son1`或`Son2`类型的对象,只要这些子类继承自`Father`类。这就是对象变量的多态性。 #### 强制类型转换 在Java中,强制类型转换主要用于将...
这里的"将引用类型认为是多态类型"是指C#中的对象引用可以被视为多态类型,这是因为它们可以指向任何继承自同一基类或接口的实例。这种灵活性使得代码更加通用,提高了重用性。 在提供的代码示例中,我们看到一个`...
成员变量多态是指子类和父类中相同的成员变量,在编译时检查父类中是否有该成员变量的定义,如果有,则编译成功,如果没有,则编译失败。在运行时,实际调用成员变量时,仍然是使用等号左边类型中的成员变量。 在 ...
Java 的这种机制遵循一个原则,当父类对象的引用变量引用子类对象的时候,不是引用变量的类型决定了调用谁的成员方法, 这个被调用的方法必须在父类中定义过的。 例如,我们可以定义一个基类 `BaseClass`,它具有一...
对象的多态是指一个引用变量可以指向多个不同类型的实例。在Java中,只有引用类型变量才能实现多态,基本类型变量无法实现。例如: ```java Animal myAnimal1 = new Animal(); Animal myAnimal2 = new Dog(); ...
* (2)多态引用:左边的变量是父类类型,右边的对象是子类的对象 * * 多态的表现出来的特征:编译类型与运行时类型不一致 * 编译的时候,按照父类的类型进行编译的 * 执行的方法,按照子类进行运行,是...
题目中提到的蓝色字体句子:“当超类对象引用变量引用子类对象时,被引用对象的类型而不是引用变量的类型决定了调用谁的成员方法,但是这个被调用的方法必须是在超类中定义过的,也就是说被子类覆盖的方法。...
- 父类引用指向子类对象:父类类型的引用变量可以引用子类的对象,这样就可以通过父类引用调用子类的重写方法。 4. 多态的优点: - 提高代码的可扩展性和可维护性:新添加的子类可以自动适应现有的代码结构,无需...
Java多态实现是面向对象编程中的一个核心概念,它允许我们使用父类的引用变量来指向子类的对象,从而在运行时决定所调用的方法。这一特性极大地增强了代码的灵活性和扩展性,使得代码能够更好地应对未来的需求变化。...
多态性分为编译时多态和运行时多态,其中运行时多态是Java中最常见的形式,也称为动态绑定。在深入探讨Java中多态的内存分析之前,我们需要先理解一些基本概念。 首先,了解Java内存模型至关重要。Java程序运行时...
3. **父类引用指向子类对象**:在Java中,允许使用父类类型的引用变量来指向子类的对象。例如,`Parent p = new Child();` 这种情况使得可以通过父类引用访问子类对象,进而调用子类中重写的方法。 #### 动态绑定...
总结来说,Java中的多态是通过继承、重写和父类引用子类对象来实现的,它提供了代码的灵活性、可扩展性和可维护性,是面向对象编程的重要特征之一。理解和熟练运用多态,对于编写高质量的Java应用程序至关重要。
综合来看,这份C++习题集不仅覆盖了基本的指针和引用概念,还深入到面向对象编程的高级特性,包括多态、继承和抽象类的运用。通过解答这些问题,学习者可以加深对C++核心概念的理解,提高编程能力。文档"C++习题1-...
当我们创建一个接口类型的引用并将其赋值给实现该接口的类的对象时,这个引用变量可以调用接口中定义的所有方法。在运行时,实际调用的是哪个实现类的方法,取决于引用变量实际指向的对象。 以下是一个简单的例子:...
静态类型是变量声明时的类型,动态类型是实际赋值的对象类型。虚函数调用依赖于动态类型。 7. 多态的应用:多态在设计模式(如工厂模式、策略模式等)、接口设计、游戏编程、图形库等领域都有广泛应用,它可以提高...
按引用传递不会复制,而是直接操作原变量;按指针传递则通过指针间接访问原变量,可以修改原变量。此外,C++还支持默认参数、可变参数模板等高级特性。 面试中,可能会涉及到如何理解和使用这些参数传递方式,以及...
多态是面向对象编程(OOP)中的一个核心概念,它允许我们编写更加灵活和可扩展的代码。 一、多态的体现 多态的体现是指父类的引用指向了自己的子类对象。这意味着,我们可以使用父类的引用来指向子类的对象,从而...
在Java中,子类可以被视为其父类的一种类型,即子类对象可以赋值给父类类型的变量,这被称为类型多态。比如: ```java Person p = new Student(); ``` 多态的优点在于它可以提供接口与实现的分离,使得代码更加...
在Java中,成员变量(包括实例变量和静态变量)在多态中的表现遵循“静态绑定”(早期绑定),即在编译阶段就已经确定了调用哪个类的成员变量。因此,无论通过父类还是子类的引用访问这些变量,都将得到与引用类型...