如果一个static方法被子类覆盖(override)了,运行时会调用哪个版本呢?
第二个问题,我们有时候会用super去调用父类的实现。如果这个类又被继承了,那这个super会指向哪个类呢?
下面的程序的运行结果是什么呢?
class High {
void doIt () {
System.out.println("doIt in High");
}
}
class Mid extends High {
void doIt () {
System.out.println("doIt in Mid");
}
void makeIt () {
super.doIt();
}
static void mmm () {
System.out.println("static in Mid");
}
}
class Low extends Mid {
void doIt () {
System.out.println("doIt in Low");
}
static void mmm () {
System.out.println("static in Low");
}
}
public class Test {
public static void main (String[] args) {
Low obj1 = new Low();
Mid obj2 = new Low();
obj1.makeIt();
obj2.makeIt();
obj1.mmm();
obj2.mmm();
}
}
结果是这样的:
doIt in High
doIt in High
static in Low
static in Mid
分享到:
相关推荐
它可以用来访问当前对象的成员变量和方法,例如: public class ThisTest{ int x = 10; public void print(){ System.out.println("ThisTest.print(): x = " + this.x); } } public class ThisTest2{ public ...
`static`关键字用于声明类级别的成员,包括变量和方法。这意味着它们属于类本身,而不是类的实例。在Java程序启动时,静态成员在类加载时被初始化,并且所有的类实例共享这些静态成员。 - 静态方法:不需要创建类...
1. **static**: 静态关键字`static`用于声明类级别的变量和方法,即静态变量和静态方法。静态变量在类加载时被初始化,并且对类的所有实例都共享同一个值。这意味着,无论创建了多少个对象,静态变量只会有一份存储...
super 关键字在 Java 中用于访问父类的成员变量和方法,super 关键字可以用于: 1. 访问父类的成员变量 2. 调用父类的方法 3. 在子类的构造方法中,使用 super 关键字来调用父类的构造方法 例如,在一个子类的构造...
在Java编程语言中,类的继承是一个非常重要的概念,它允许我们创建一个新类(子类)来继承现有类(父类)的属性和方法。本文将深入探讨Java中如何通过`super()`关键字来调用父类的构造方法,以及如何在子类中访问...
- `super`关键字用于访问父类的成员,包括字段和方法。当你在一个子类中重写父类的方法,或想要访问父类的构造器时,就会用到`super`。 - 示例中同样未展示`super`的使用,但常见的使用场景如`super.someMethod()`...
它可以用于调用父类的构造函数(`super()`),或者访问父类的字段和方法(`super.field`或`super.method()`)。在子类中,如果重写了父类的方法,可以通过`super`调用父类的原版方法。在示例中没有使用`super`,但它...
它与`this`相对,但用于访问超类(父类)的属性和方法。主要用途如下: - **调用父类构造函数**:在子类构造函数中,`super(args)`用于调用父类的特定构造函数。 - **访问父类被覆盖的方法**:如果子类重写了父类的...
在Java中,多态可以通过继承和方法覆盖来实现。 **特点:** - **方法覆盖实现多态:** 子类可以覆盖父类的方法,根据运行时的对象类型动态决定调用哪个方法。 - **接口实现多态:** 实现接口的多个类可以拥有相同的...
- **父类引用**:`super`关键字用于访问父类的成员,包括字段和方法。在子类中,`super`用于明确调用父类的构造函数或者访问父类被覆盖的成员。例如,`super()`调用无参数的父类构造函数。 4. **final**: - **...
Java中的继承是面向对象编程(OOP)的核心特性之一,它允许一个类(子类)从另一个类(父类)继承特性,包括属性和方法。继承的目的在于提升代码的重用性、优化结构以及为多态提供基础。 ### 1. 继承 #### 1.1 什么...
### Java中static、this、super、...通过上述详细介绍,我们可以看出`static`、`this`、`super`和`final`关键字在Java编程中扮演着重要的角色,正确地理解和使用这些关键字能够帮助开发者编写出更加健壮、高效的代码。
在Java编程语言中,`static`是一个非常重要的关键字,它主要用于定义类成员(包括变量和方法)为静态成员。静态成员的特点是它们不依赖于任何特定对象的存在,即在没有创建该类的实例之前就可以被访问。 ##### 1. ...
在Java编程语言中,`static`关键字扮演着至关重要的角色,它定义了类级别的变量和方法,不受实例化对象的影响。本篇文章将深入探讨`static`的使用方法、原理及其在代码块中的应用。 首先,我们要理解`static`修饰符...
Java 继承是面向对象编程中的一个核心概念,它允许一个类...通过深入理解并灵活运用 Java 的继承和方法重写,可以编写出更具可维护性和扩展性的代码。在实际开发中,合理地利用这些特性,能有效提升软件的质量和效率。