class Super {
public int field = 0;
public int getField() {
return field;
}
}
class Sub extends Super {
public int field = 1;
public int getField() {
return field;
}
public int getSuperField() {
return super.field;
}
}
public class FieldAccess {
public static void main(String[] args) {
Super sup = new Sub();
System.out.println("sup.field=" + sup.field + ", sup.getField()="+sup.getField());
Sub sub = new Sub();
System.out.println("sub.field=" + sub.field + ", sub.getField()="+sub.getField() + ", sub.getSuperField()="+sub.getSuperField());
}
}
//output:
// sup.field=0, sup.getField()=1
// sub.field=0, sub.getField()=1, sub.getSuperField()=0
以上情况比较少见:通常都将所有域设置成private, 因此不能直接访问它们. 另外, 最好不要对基类中的域和导出类中的赋同样的名字
class StaticSuper {
public static String staticGet() {
return "Base staticGet()";
}
public String dynamicGet() {
return "Base dynamicGet()";
}
}
class StaticSub extends StaticSuper {
public static String staticGet() {
return "Derived staticGet()";
}
public String dynamicGet() {
return "Derived dynamicGet()";
}
}
public class StaticPolymorphism {
public static void main(String[] args) {
StaticSuper sup = new StaticSub();
System.out.println(sup.staticGet());
System.out.println(sup.dynamicGet());
}
}
//output:
//Base staticGet()
//Derived dynamicGet()
如果某个方法时静态的, 它的行为就不具有多态性. 以上情况也不多见, 因为一般不通过实例调用静态方法.
分享到:
相关推荐
面向对象程序设计是 Java 编程的基础,它解决了传统程序设计风格中的缺陷,如数据抽象简单、信息完全暴露、算法复杂、无法很好地描述客观世界等问题。面向对象程序设计的基本思路是首先分析问题并建立相应的对象,...
本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...
本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...
面向对象编程是 Java 语言的核心思想,它解决了面向过程编程的许多缺陷。面向对象编程的基本单元是对象,而不是函数。对象有两个方面:属性和方法。属性用来描述对象,方法告诉外界对象有那些功能。对象的方法的实现...
然而,这些系统都存在一定的缺陷和不足之处,例如CourseMaster系统在动态测试方面存在缺陷,上海大学段汉周等人的系统主要针对VB语言编程设计,无法评估学生的编程思想和技能。 基于Java反射机制的自动评分技术的...
在Java编程语言中,类加载器(ClassLoader)是运行时环境的重要组成部分,它负责加载类的字节码到JVM中。这篇博文“JAVA类加载器分析--热部署的缺陷”探讨了Java类加载机制以及在热部署场景下可能遇到的问题。热部署...
理解JMM是深入学习Java并发编程的基础。 #### 二、JMM的基本概念 ##### 1. 主内存(Main Memory) 主内存是JMM的核心概念之一,它存储着程序中的所有变量(包括但不限于实例字段、静态字段和数组元素)。主内存对...
面向对象编程(OOP)是Java编程语言的核心思想之一,主要包括四大特征:抽象、继承、封装和多态。 1. **抽象**:抽象是面向对象编程的重要概念,指的是简化复杂度的过程。在Java中,可以通过接口(interface)和抽象类...
### UML在Java编程中的应用 UML,即统一建模语言,是软件工程领域的一种标准化建模语言,被广泛应用于分析、设计、构建和维护软件系统的过程中。它通过一系列图表来描述系统的静态结构和动态行为,对于Java程序员而...
面向对象编程(OOP)是一种编程范式,它的核心思想是将现实世界中的事物抽象成对象,通过封装、继承和多态等机制来实现软件的设计。面向对象的特征主要包括以下几个方面: 1. **封装**:封装是将数据和对数据的操作...
本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...
### Java远程教育系统的关键知识点 #### 一、系统背景与意义 **系统背景:** - 随着互联网技术的快速发展,尤其是大学作为互联网技术的重要发源地之一,信息技术已经深刻影响了现代社会的各个方面,包括商业、教育...
这种方法的核心思想是对对象进行引用计数,每当有一个地方引用它时,计数器加1;当引用失效时,计数器减1。当计数器值为0时,则表示该对象可以被回收。 然而,这种方法存在一个明显的缺陷——无法处理循环引用的...
本文将深入探讨React中的面向对象编程思想以及Yarn包管理器的使用,并简要介绍React入门概念。 ### 知识点 01 - 面向对象编程在React中的应用 在React开发中,面向对象编程(OOP)是不可或缺的一部分。ES6引入了`...
丰田生产系统的精髓在于其精益思想,它强调去除生产过程中的浪费,如过度生产、等待、运输、过度加工、库存、动作和缺陷。在软件开发中,这些浪费可以转化为无效的代码、冗余的工作、不必要的文档、过长的开发周期等...
在Java编程语言的背景下,TQS的实施涉及到多个方面: 1. **设计原则**:Java开发者应遵循 SOLID 原则(单一职责、开闭、里氏替换、接口隔离和依赖倒置)以实现可维护和可扩展的代码。这与TQS的理念相吻合,即追求...
白盒测试,也称为结构测试或逻辑驱动测试,是一种软件测试方法,其核心思想是根据程序内部的逻辑结构和工作原理来设计测试用例。在白盒测试中,测试人员通常需要了解程序的源代码、数据结构以及算法,以便能够深入地...