昨天跟朋友讨论到一个有趣的问题:java中variable有没有override?
真是惭愧啊,到现在才知道原来java中的override只是针对method来讲的,对于变量是hide.
闲言少叙,先上两段代码:
public class Base {
public int x=1;
public void echo(){
System.out.println(x);
}
}
public class Sub extends Base{
public int x=2;
public static void main(String[] args) {
Sub sb=new Sub();
Base bs=new Base();
sb.echo();
bs.echo();
System.out.println(bs.x+"");
System.out.print(sb.x+"");
}
}
猜猜结果是啥?
是
1
1
1
2
呵呵,可以看到变量并没有override.
如果做一下改变,在Sub里面override echo方法,并且与Base的一模一样,再运行,结果是什么呢?
public class Sub extends Base{
public int x=2;
public void echo(){
System.out.println(x);
}
public static void main(String[] args) {
Sub sb=new Sub();
Base bs=new Base();
sb.echo();
bs.echo();
System.out.println(bs.x+"");
System.out.print(sb.x+"");
}
}
呵呵,结果是:
2
1
1
2
不过话说回来,我觉得除非真的被逼无奈,不然不要在一个hierachy下面定义名字重复的变量,否则很容易出现“潜伏”的问题。
分享到:
相关推荐
现象: … java: 1801: method does not override a method from its superclass @Override… 原因: Eclipse is defaulting to Java 1.5 and you have classes implementing interface methods (which in Java 1.6 ...
注意: koa-methodoverride@2.x表示koa@2.x ,将koa-methodoverride@1.x和koa@1.x koa-methodoverride@1.x使用。 用法,更多 var app = require ( 'koa' ) ( ) ; var methodOverride = require ( 'koa-method...
在Java编程语言中,"The method of type must override a superclass method" 是一个常见的错误提示,它通常出现在子类试图重写父类方法时,但没有按照正确的格式进行。这个错误通常与多态性和继承概念有关,是理解...
对Java中@override个人理解阐述,希望能帮大家更好理解。
$ npm install method-override API 注意在需要了解请求方法的任何模块之前使用此模块非常重要(例如,必须在csurf模块之前使用它)。 methodOverride(getter,选项) 创建一个新的中间件函数,以新值覆盖req....
根据提供的文件信息,我们可以深入探讨Java中的两个核心概念:重写(Override)与重载(Overload)。这两个概念在面向对象编程中非常重要,尤其是在Java这样的语言中。 ### Java中的重写(Override) #### 什么是重写? ...
在深入探讨Java反射机制中`Constructor`、`Method`、`Field`以及`Class`类的使用之前,我们需要先了解反射的基本概念及其重要性。反射是Java的一项强大功能,它允许程序在运行时检查类和对象的结构,甚至可以创建和...
Java中的重写(Override)和重载(Overload)是面向对象编程中的两个核心概念,它们都是为了提高代码的灵活性和可复用性。 **重写(Override)** 是指子类能够重新定义父类中非私有(public或protected)的方法,以便在...
Java中的方法重载(Overloading)和重写(Overriding)是两个重要的概念,它们都是实现多态性的方式,但有着本质的区别。 1. **方法重载(Overloading)**: 方法重载是指在同一个类中可以有多个同名方法,但这些方法的...
在Java编程语言中,`Override`关键字是一个非常重要的概念,它用于标识一个方法是重写了父类中的同名方法。这个关键词确保了子类的方法能够覆盖或实现接口中定义的抽象方法,从而提供了多态性,这是面向对象设计的...
Java 中 Method 的 Invoke 方法详解 Java 中的 Method 对象提供了 invoke 方法,这个方法可以动态地调用 Java 方法。下面详细介绍了 invoke 方法的实现机制。 首先,在调用 invoke 方法之前,需要检查 ...
在Java编程语言中,`@Override` 是一个重要的注解,它的主要作用是明确标识一个方法是重写了其父类中的方法。这个注解在代码的可读性和编译时的错误检查方面提供了显著的优势。下面我们将深入探讨`@Override` 的作用...
这种方式下,无需在XML或Java配置中显式指定 `init-method` 和 `destroy-method`,Spring会自动识别并调用这些接口的方法。 总的来说,`init` 和 `destroy` 方法提供了对象生命周期管理的灵活性,使得开发者能够在...
在C++编程语言中,Overload(重载)、Override(覆盖)和Hide(隐藏)是三个重要的概念,它们涉及到函数的多态性、继承和作用域。这些特性使得C++能够实现灵活的代码复用和面向对象的设计。 **1. Overload(重载)*...
### 详细解析Java中抽象类和接口的区别 #### 引言 在面向对象编程中,Java作为一种广泛应用的编程语言,提供了多种方式来实现抽象的概念。其中最常用的两种机制是抽象类(abstract class)和接口(interface)。这...
Java中的重载(Overloading)和重写(Overriding)是面向对象编程中两个重要的概念,它们体现了Java的多态性。多态性是面向对象编程的三大特性之一,另外两个是封装和继承。 首先,让我们详细解释一下方法的重载。重载...
$ npm install method-override 原料药 记住这个模块在那些需要知道请求方法的模块之前使用(例如,必须在csurf模块之前使用) methodOverride(getter,options) 创建一个新的中间件函数和设置新的属性值,使用...
受快速方法覆盖的启发 ... var method_override = require("koa_method_override") app.use(method_override()); 这将创建 this.request.original_method // hold the original method this.method // new method
例如,当客户端发送一个POST请求时,如果Nginx配置中没有明确允许该方法,则可能会返回405 Method Not Allowed的状态码。 #### 三、源码级修改步骤 ##### 1. 进入Nginx源码目录 首先,需要获取Nginx的源码包,并...
Java 中的@Override标签的深入理解 @Override标签是一个非常重要的标签,但是一般情况下,我们只是知道它的基本用途,即用于标记方法的重写。但是,这个小小的标签蕴藏着很多有趣的秘密。今天,我们就来深入探讨...