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

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();

相关推荐

    静态(static)方法重写(override)

    综上所述,静态方法不能被重写,只能被隐藏。这是因为静态方法属于类级别,而不是对象级别。在实际应用中,我们应该注意区分静态方法和实例方法的特性及其调用方式,确保正确理解和使用这些特性来满足特定的设计需求...

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

    静态方法在Java中属于类级别,而非实例级别,这导致了它们在继承链中不能被重写。 静态方法是与类相关的,而不是与类的实例相关。当一个类的静态方法被调用时,编译器会根据调用时的类类型来确定调用哪个方法,而...

    Java 继承和方法重写

    - **抛出异常**:重写方法抛出的异常类型不能大于被重写方法的异常类型。 - **修饰符**:子类方法不能是 private 或 static,否则不属于重写,而是隐藏。 3. **@Override 注解**: 使用 `@Override` 注解可以...

    静态(static)方法的继承和重写

    虽然这不是真正意义上的重写,因为静态方法在Java中不能被覆盖,但子类可以拥有与父类静态方法相同签名的静态方法。这样做可能会导致命名冲突,因此在设计时需要特别注意。如果在子类中调用同名的静态方法,Java...

    java伪静态URL重写的方法

    这种技术的优势在于,静态URL对于搜索引擎更加友好,更容易被索引,同时也能提升用户体验。 实现Java伪静态URL重写通常依赖于第三方库,例如微软公司的UrlRewriter.jar组件。该组件是一个URL重写工具,它提供了一个...

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

    静态方法可以被子类继承,但是不能被重写。子类可以继承父类的静态方法,但是不能覆盖父类的静态方法。 需要注意的是,静态方法是属于类的,而不是对象的。静态方法可以被子类继承,但是不能被重写。这是 Java 编程...

    Java中静态方法和非静态方法的区别.docx

    静态方法可以访问另一个类或同一个类的静态数据成员和静态方法,不能访问非静态方法和变量。此外,静态方法可以重写任何静态数据成员的值。 二、非静态方法 非静态方法可以访问静态数据成员和静态方法,也可以访问...

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

    总之,Java中的静态方法不能被重写,只能被隐藏。静态方法的调用在编译时就已经确定,基于方法调用时的类引用,而不是对象的实际类型。如果想要实现类似重写的效果,应将方法改为非静态,并确保遵循Java的继承和多态...

    Java重写.docx

    2. 被final关键字修饰的方法不能被重写:如果父类方法被final关键字修饰,那么子类不能重写该方法。 3. 被static修饰的方法不能被重写:如果父类方法被static修饰,那么子类不能重写该方法。 但是,如果子类中定义了...

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

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

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

    此外,子类方法的访问修饰符不能比父类更严格,且不能声明为private。`@Override`注解用于明确表示该方法是重写父类的方法,这有助于编译器检查方法签名是否匹配,提高代码的可读性和安全性。 其次,我们要了解**...

    java 页面静态化

    实现Java页面静态化的常见方法有两种: 1. **预渲染**:在系统启动或者后台定期任务中,根据特定的URL,通过Java代码获取数据并生成HTML文件,存储在文件系统或CDN上。这种方式适用于内容相对固定,更新不频繁的...

    java中的重载和重写的区别

    4. 重写方法的访问权限不能小于被重写的方法,例如,父类的`public`方法不能被子类的`private`方法重写。 5. 重写方法在子类中可以改变父类方法的实现,但不能改变方法的签名(返回类型和参数列表)。 理解这些概念...

    Java方法重载和方法重写的区别.docx

    5. **权限修饰符**:重写时,重写方法的访问权限不能小于被重写方法的访问权限。 6. **方法调用**:重载是根据传递的实际参数来确定;重写则是根据对象的实际类型(多态性)来确定。 7. **异常处理**:重写方法抛出...

    Java中方法重写与方法重载的比较.pdf

    - **final关键字**:如果父类方法被声明为`final`,则子类无法重写该方法。而重载与`final`关键字无关。 - **static与非static**:静态方法不能被重写,但可以重载。非静态方法可以重写和重载。 理解并熟练掌握方法...

    java之中的静态变量与静态方法的继承与覆盖问题.doc

    静态变量在子类中不是被覆盖而是被重新定义,而静态方法则可以被继承但不能被覆盖。 - 这些特性对于理解Java中的类继承机制非常重要,特别是在处理复杂的类层次结构时。了解这些规则有助于编写更清晰、更易于维护的...

    java代码静态检测规则

    ### Java代码静态检测规则概述 Java作为一种广泛应用的编程语言,在软件开发过程中,为了确保代码的质量、可维护性和安全性,采用代码静态检测工具是至关重要的。本文将详细介绍一系列针对Java代码的静态检测规则,...

    Java重载和重写的区别--源码实例

    6. 静态方法不能被非静态方法重写。 在实际编程中,重载允许我们在一个类中创建具有相同名称但行为不同的方法,而重写则允许我们在子类中修改或扩展父类的行为,以适应特定的子类需求。这两者都是多态性的重要体现...

    java伪静态简单实例

    2. **URL重写**:改变URL的显示方式,但不改变其实际功能。 3. **urlrewrite框架**:一个用于URL重写的Apache Tomcat过滤器,支持伪静态等操作。 4. **urlrewrite.xml配置**:定义URL重写规则的文件,包括输入URL...

    Java 生成静态页

    4. **URL重写**:为了使用户仍然可以通过原有的动态URL访问静态页面,我们需要进行URL重写。这通常通过Apache的mod_rewrite模块或者Java的Filter实现,将请求从动态路径转向静态文件。 5. **缓存策略**:生成的静态...

Global site tag (gtag.js) - Google Analytics