`
xm_king
  • 浏览: 392494 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
Group-logo
Spring技术内幕读书笔...
浏览量:15348
社区版块
存档分类
最新评论

java静态方法能否被重写

    博客分类:
  • JAVA
阅读更多

       JAVA静态方法形式上可以重写,但从本质上来说不是JAVA的重写。因为静态方法只与类相关,不与具体实现相关,声明的是什么类,则引用相应类的静态方法(本来静态无需声明,可以直接引用),看下例子:

 

class Base{
        static void a( ){System.out.println("A");  }
                 void b( ){System.out.println("B"); }
}
public class  Inherit extends Base{
          static void a( ){System.out.println("C");  }
                  void b( ){System.out.println("D"); }
           public static void main(String args[]){
                    Base b=new Base();
                    Base  c=new Inherit();
                    b.a();
                    b.b();
                    c.a();
                    c.b();
         }
}
 

 

以上输出的结果是:A
                                 B
                                 A
                                 D
       非静态方法 按重写规则调用相应的类实现方法,而静态方法只与类相关。

       所谓静态,就是在运行时,虚拟机已经认定此方法属于哪个类。

专业术语有严格的含义,用语要准确."重写"只能适用于实例方法.不能用于静态方法.对于静态方法,只能隐藏(刚才的例子可以重写那只是形式上的 ,并不满足多态的特征,所以严格说不是重写)。

      静态方法的调用不需要实例化吧..  不实例化也就不能用多态了,也就没有所谓的父类引用指向子类实例.因为不能实例化 也就没有机会去指向子类的实例。所以也就不存在多态了。

分享到:
评论
2 楼 xm_king 2010-10-18  
coonooo 写道
b.a(); //静态方法只能通过类来调用?
b.b();
c.a(); //静态方法只能通过类来调用?
c.b();

哥们,你可能理解错了,静态方法是可以通过类实例变量去引用的。
1 楼 coonooo 2010-10-18  
b.a(); //静态方法只能通过类来调用?
b.b();
c.a(); //静态方法只能通过类来调用?
c.b();

相关推荐

    Java中的静态方法能否被重写?

     静态方法属于类,是不能被重写,故而也不能实现多态。 *  下面是具体的验证过程  首先,定义一个超类A,里边定义一个静态方法和一个非静态方法: publicclassA{ publicvoidunstaticMethod(){ System.out....

    java伪静态URL重写的方法

    伪静态URL重写实际就是以静态地址(如:http://127.0.0.1:8080/pro/index.html)访问地态网页的方法(如:http://127.0.0.1:8080/pro/index.jsp)。 伪静态URL重写是通过微软公司封装好了的一个URL重写组件...

    Java中方法重载与重写的区别

    1、重载  方法的重载是同一个类中多态性的一种表现。  方法重载须遵循如下两条...  (3)子类方法不能缩小所重写方法的访问权限。  (4)子类方法不能抛出比所覆盖方法更多的异常。  (5)静态方法不存在重

    浅谈java中静态方法的重写问题详解

    本篇文章是对java中静态方法的重写问题进行了详细的分析介绍,需要的朋友参考下

    IOS 静态方法与动态方法详解

    IOS 静态方法与动态方法详解 1、问题提出  iOS中有静态方法与动态方法,那么两种方法的异同是什么? 2、问题分析  因为每个对象都由相应的数据结构与方法相构成,一个程序可能有多个属于同一个类的对象,而每个...

    Java常见笔试、面试题目深度剖析,方法重写详解、静态代码块与构造方法执行顺序问题

    Java常见笔试、面试题目深度剖析,方法重写详解、静态代码块与构造方法执行顺序问题

    Java编程子类能否重写父类的静态方法探索

    关于子类能否重写父类的静态方法,对像我这种初级的编程爱好者来说仍是值得讨论的一件事,下面我们通过具体实例,对此问题进行简单的探索。

    伪静态(url重写)

    伪静态(url重写)伪静态(url重写)伪静态(url重写)

    重载与覆写/重写的区别

     如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。  在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。  但有时子类并不想原封不动地继承父类的方法,...

    java Thread

    创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖完! 2.创建主方法调用类 里面有源码,导入myeclipse执行

    浅谈Java中的重载,重写,多态,静态绑定、动态绑定

    主要介绍了浅谈Java中的重载,重写,多态,静态绑定、动态绑定,具有一定借鉴价值

    Java经典面试题.pdf

    1.什么是Java的自动装箱和拆箱? 自动装箱是指将基本数据类型转换为对应的包装类对象,以便于在需要使用对象的...修饰变量:被final修饰的变量为常量,不能被修改。 5.什么是Java的异常处理? 异常处理是指在程序执

    InterfaceTest.java 这段代码用于理解接口静态、默认(可重写)、接口中的方法、多实现、多继承知识点

    这段代码用于学习接口时,更加深刻理解接口静态、默认(可重写)、接口中的方法、多实现、多继承等知识点。

    urlrewrite重写demo

    urlrewrite重写demo,伪静态技术实现

    Java复习大纲面试题.doc

    一、简答题 1.编译java程序使用什么命令?运行java使用什么命令?...区别:方法重载没有继承、属于一种静态联编技术。 方法重写有继承、属于动态联编技术。 10.什么是抽象类?什么是接口?抽象类与接口的区别?

    java面试真题整理

    java开发岗企业常考面试题目 1.GC垃圾回收处理器,回收内存 托管资源: 非托管资源:手动释放资源 2.堆内存:new出来的 栈内存:基本数据类型的变量,方法的...修饰的方法不能被重写 3.修饰的类不能被继承 String

    java 基础 类对象创建实例化过程 实例解析

    * (如果是重写即子类将父类的实例方法重写类,则调用子类的,如果是隐藏即方法则父类中声明为静态方法,则调用父类本身的但具体方法中的成员是否被子类修改需要进行分析) —> * 下一层次的父类中重复前一个过程

    JAVA 实现URL重写工具 UrlRewriter Java v2.0 RC1-urlrewriterjava

    2. **增强用户体验**:虽然大多数用户不会过多关注网站的具体URL,但对于大型网站而言,提高URL的可读性仍然是必要的,这不仅能帮助用户更好地理解网站结构,还能提升整体的用户体验。 3. **隐藏技术细节**:通过URL...

    Java面试题超级全.zip

    抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。 2.本地方法是由本地代码(如 C++ 代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。 3.synchronized 和方法的实现细节有关,抽象...

    Java高并发:静态页面生成方案--UrlRewrite

    UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址。 优点 一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误...

Global site tag (gtag.js) - Google Analytics