`

继承基础--成员变量的静态绑定和方法的动态绑定-测试

    博客分类:
  • Java
 
阅读更多

写出程序的输出,测试自己是否了解继承基础。

/**  父类 */
class PaPa {
	String color = "黑白";
	public void method() {
		System.out.println("父亲照片:" + color);
	}
}
/**  子类 */
class Sub extends PaPa {
	String color = "彩色";
	public void method() {
		System.out.println("儿子照片:" + color);
	}
}
/**  测试 */
public class Test {
	private void show(PaPa p) {
		System.out.print(p.color+" ---- ");
		p.method();
	}
	public static void main(String args[]) {
		Sub s = new Sub();
		PaPa t = new Sub();
		PaPa p = new PaPa();
		System.out.println(p.color);
		System.out.println(s.color);
		System.out.println(t.color);
		new Test().show(p);
		new Test().show(s);
		new Test().show(t);
	}
}

程序输出:

黑白
彩色
黑白
黑白 ---- 父亲照片:黑白
黑白 ---- 儿子照片:彩色
黑白 ---- 儿子照片:彩色


小结:

成员变量:没有动态绑定的说法,全部都是静态绑定;

覆盖方法:privae/static/final的,按照静态绑定;其他的方法,看实际对象的类型调用匹配的方法。运行时动态绑定。

 

0
0
分享到:
评论

相关推荐

    WPF绑定静态变量的示例代码

    在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF)中绑定控件到静态变量。WPF是一种用于构建桌面应用程序的强大框架,它允许开发者通过数据绑定机制将UI元素与后台数据模型紧密关联,实现视图与...

    Java动态绑定和静态绑定.doc

    在Java编程语言中,动态绑定和静态绑定是两个重要的概念,它们涉及到方法调用和多态性。了解这两个概念对于深入理解面向对象编程至关重要。本文将详细探讨它们的区别,并通过实例来阐述它们的工作原理。 首先,让...

    WPF绑定静态变量的示例代码(二)加上IValueConverter

    在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF) 中绑定静态变量,并通过使用IValueConverter接口来实现动态更新控件的显示。WPF是.NET Framework的一部分,它为构建丰富的桌面应用程序提供了...

    动态SQL与绑定变量

    动态SQL允许在运行时构建和执行SQL语句,而绑定变量则是在动态SQL中用于替代具体值的占位符,使得SQL语句更为灵活和高效。 ### 1. 什么是动态SQL 动态SQL指的是在运行时动态生成并执行的SQL语句。与静态SQL(在...

    java成员变量覆盖问题

    在Java编程语言中,成员变量是指定义在类中的变量,它们可以在类的方法、构造器或类的其他成员方法中访问和操作。成员变量的覆盖(有时会被误认为是“重写”)是理解Java继承机制的关键之一。本文将详细解释成员变量...

    详解PHP后期静态绑定分析与应用

    总结起来,PHP 后期静态绑定是面向对象编程中一个强大的工具,它使得静态方法和属性在继承链中的行为更加灵活,能够根据实际调用场景动态改变解析的目标类。理解并熟练掌握这一特性,对于编写复杂的面向对象代码和...

    JAVA面向对象基础测试题-继承-封装-多态等测试题.docx

    **题目描述**:给定一个 `Question` 类,包含一个私有成员变量 `num` 和一个静态方法 `update`。主函数中创建了一个 `Question` 类的对象,并修改了 `num` 的值,然后调用了 `update` 方法。 **解析**:在这个例子...

    Java 静态绑定与动态绑定深入分析

    Java中的静态绑定与动态绑定是面向对象编程中的关键概念,它们决定了方法调用的方式和时机。静态绑定(也称为早期绑定或编译时绑定)和动态绑定(也称为晚期绑定或运行时绑定)是Java中多态性实现的基石。 **静态...

    layui动态绑定事件的方法

    在前端开发中,动态绑定事件是一项非常重要的技术,尤其是在处理动态创建的DOM元素时。...通过上述方法,即使是动态添加到页面上的元素,也能确保事件能够正确地绑定和触发,从而为用户带来良好的交互体验。

    《剑指offer》Java理解静态绑定与动态绑定.pdf

    Java中的静态绑定与动态绑定是面向对象编程中的两个核心概念,它们关系到程序的编译与运行时行为。理解这两个概念对于写出高效、灵活的代码至关重要。 首先,静态绑定(也称为前期绑定或编译时绑定)是指在编译期间...

    java之中的静态变量与静态方法的继承与覆盖问题.doc

    Java 语言中的静态变量和静态方法是类级别的成员,它们不属于任何实例,而是直接关联到类本身。在探讨继承和覆盖的问题时,这两者有着不同的行为特性。 首先,让我们来看看静态变量。静态变量(也称为类变量)是...

    Java中的静态绑定和动态绑定

    一个Java程序的执行要经过编译和执行(解释)这两个步骤,同时Java又是面向对象的编程语言。...  使用private或static或final修饰的变量或者方法,使用静态绑定。而虚方法(可以被子类重写的方法)则会根

    静态(static)方法的继承和重写

    如果在子类中调用同名的静态方法,Java编译器会根据方法调用时的类类型来决定调用哪个方法,即所谓的静态绑定或早绑定。 在实际编程中,我们通常使用静态方法来实现工具类或辅助功能,这些功能不依赖于特定的实例...

    C++ 静态成员变量 嵌套类分配回收内存

    然而,值得注意的是,在C++中,对静态成员变量使用`new`和`delete`进行手动管理并不常见,因为静态成员变量默认就具有全局作用域和生命周期。因此,这种做法虽然可行,但在实际开发中应审慎使用,避免不必要的复杂性...

    C++静态成员函数不能调用非静态成员变量(详解)

    总结来说,C++中的静态成员函数不能调用非静态成员变量,主要是由于静态成员函数不与任何特定对象绑定,没有`this`指针,因此无法访问需要对象实例才能确定的非静态成员。要访问非静态成员变量,必须通过非静态成员...

    Java中静态方法和非静态方法的区别.docx

    静态方法可以访问另一个类或同一个类的静态数据成员和静态方法,不能访问非静态方法和变量。此外,静态方法可以重写任何静态数据成员的值。 二、非静态方法 非静态方法可以访问静态数据成员和静态方法,也可以访问...

    Java中的静态绑定和动态绑定详细介绍

    Java中的静态绑定和动态绑定是面向对象编程中的关键概念,它们决定了程序在运行时如何解析方法调用和访问成员变量。 静态绑定,也称为早期绑定,是指在编译期间就已经确定了方法调用的具体实现。这通常发生在方法的...

    Java多态中的动态绑定与静态绑定

    Java虚拟机的动态绑定与静态绑定 大家可能都知道Java面向对象的三大特性,封装,继承,多态,其中动态绑定就与多态有关,那什么是动态绑定呢? 1.动态绑定(auto binding):也叫后期绑定,在运行时,虚拟机根据具体...

    Delphi 动态绑定事件处理函数过程

    在 Delphi 编程环境中,动态绑定事件处理函数是一个强大的特性,它允许程序在运行时动态地连接事件和对应的处理函数,而不是在编译时静态地确定。这为开发提供了更大的灵活性,特别是在处理不确定数量的对象或者需要...

    VB.NET局部静态变量介绍

    VB.NET能够实现很多C#不能做到的功能,如When语句、Optional参数、局部Static变量、对象实例访问静态方法、Handles绑定事件、On Error处理异常、Object直接后期绑定等等。VB和C#同属.NET的语言,编译出来的是同样的...

Global site tag (gtag.js) - Google Analytics