昨天跟朋友讨论到一个有趣的问题: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下面定义名字重复的变量,否则很容易出现“潜伏”的问题。
分享到:
相关推荐
注意: 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中@override个人理解阐述,希望能帮大家更好理解。
$ npm install method-override API 注意在需要了解请求方法的任何模块之前使用此模块非常重要(例如,必须在csurf模块之前使用它)。 methodOverride(getter,选项) 创建一个新的中间件函数,以新值覆盖req....
现象: … 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 ...
java代码-Override
Java面向对象编程中的重写(override)指的是子类可以重写其父类中的非private方法,使得子类在调用该方法时会使用自己的实现而不是父类的实现。 重写(Override)讲解 定义一个名为 Animal 的父类和一个名为 Cat 的...
主要介绍了详解Java中@Override的作用的相关资料,希望通过本文能帮助到大家,让大家理解这部分内容,需要的朋友可以参考下
NULL 博文链接:https://thaipine.iteye.com/blog/2354220
方法的重写(Overriding)和重载(Overloading)是Java多态性的不同表现,想要了解更多请参考本
nginx配置中找到对http method的所有制约
$ 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
java代码-Override2
java
Plack :: Middleware :: MethodOverride-通过POST将REST方法覆盖到Plack应用 版本 版本0.20 概要 在您的Plack应用中: use Plack::Builder; builder { enable MethodOverride; $app; }; 通过您的POST表单中的...
Lua中没有类的概念,但是程序猿说要面向对象,然后就有类。程序猿说要继承 和override,然后就有了继承 和 override 。
重载overload,这个概念是大家熟知的。在同一可访问区内被声名的几个具有不同参数列的(参数的类型、个数、顺序不同)同名函数,程序会根据不同的参数列来确定具体调用哪个函数,这种机制就是重载
java代码-Override1
从虚拟机角度看Java多态->(重写override)的实现原理
localVariable.java 演示局部变量 localVSmember.java 局部变量与成员变量同名问题示例 onlyTest.java 对象传值示例 otherClass.java 从类的外部访问对象的成员 showInstVar.java 演示不同的对象拥有不同的成员...