`
zckai
  • 浏览: 18578 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java静态方法能否被重写

阅读更多

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

 

Java代码 复制代码
  1. class Base{   
  2.         static void a( ){System.out.println("A");  }   
  3.                  void b( ){System.out.println("B"); }   
  4. }   
  5. public class  Inherit extends Base{   
  6.           static void a( ){System.out.println("C");  }   
  7.                   void b( ){System.out.println("D"); }   
  8.            public static void main(String args[]){   
  9.                     Base b=new Base();   
  10.                     Base  c=new Inherit();   
  11.                     b.a();   
  12.                     b.b();   
  13.                     c.a();   
  14.                     c.b();   
  15.          }   
  16. }  
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
       非静态方法 按重写规则调用相应的类实现方法,而静态方法只与类相关。

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

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

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

分享到:
评论

相关推荐

    静态(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重载和重写的区别--源码实例

    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. **缓存策略**:生成的静态...

    java静态网页

    Java静态网页技术主要涉及到将动态网页内容转换成静态HTML页面,以便提高网站的访问速度和搜索引擎优化(SEO)。动态网页通常由服务器上的程序在请求时生成,而静态HTML页面是预先生成并存储在服务器上,用户请求时...

Global site tag (gtag.js) - Google Analytics