`
bomb2121
  • 浏览: 5242 次
  • 性别: Icon_minigender_1
  • 来自: 未知
最近访客 更多访客>>
社区版块
存档分类
最新评论

静态方法继承和覆盖

    博客分类:
  • J2SE
F# 
阅读更多

static的方法到底能不能覆盖?

1.定义StaticExt类

package com.freelunch.test;

public class StaticExt {
	
	public static  void test()
	{
		System.out.println("father");
	}
}

 
 2.定义StaticExt 的子类StaticExtSon

package com.freelunch.test;

public class StaticExtSon extends StaticExt{
	
	public  static void test()
	{
		System.out.println("son");
	}
	
	public static void main(String[] args) {
		StaticExtSon.test(); // "son"
		
		new StaticExtSon().test(); // "son"
		
		StaticExt f = new StaticExtSon();
		f.test();// "father" 
	}
}

 

输出:

son
son
father

 

3. 结论

静态方法只与定义时所在的类相关,在编译期就已经绑定到某个类。可以继承,但不能在子类中被同名方法覆盖。

由定义引用的类型决定调用的是父类还是子类的方法。

 

分享到:
评论
5 楼 hzwq 2010-06-06  
无意搜到了这个帖子
我为什么觉得静态方法是不能被继承的呢?也就根本谈不上覆盖了
当StaticExtSon没有写test()方法时,根本就不能使用StaticExtSon.test()静态方法。
楼主的例子只能说明静态方法是早绑定。
4 楼 bomb2121 2009-09-05  
qianhd 写道
这种帖子不隐藏 只会对后来人产生误导

可能我的表述确实有些问题,对新手来说会有一定的误导,献丑了 :(
PS:各位大哥说的有理,但我也没有说静态方法能够被覆盖呀。
3 楼 Emiya_wang 2009-09-04  
静态方法是不能被覆盖的  而是被隐藏了
通过父类的引用调用的是父类的静态方法
2 楼 qianhd 2009-09-04  
这种帖子不隐藏 只会对后来人产生误导
1 楼 raomengwen 2009-09-04  
static的方法是不能被覆盖的

相关推荐

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

    - **访问限制**:静态方法只能访问静态成员变量和静态方法,无法直接访问非静态成员变量和方法。 - **不参与多态**:静态方法不受多态的影响,即使在子类中重写了父类的静态方法,调用时仍然根据声明类型来决定执行...

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

    静态方法的继承和重写是面向对象编程中的重要概念,对于理解和设计复杂的软件系统至关重要。 首先,我们来谈谈静态方法的继承。当一个子类继承了父类,它会自动继承父类中所有的公共和保护静态成员,包括静态方法。...

    Java方法继承、方法重载、方法覆盖总结

    ### Java方法继承、方法重载、方法覆盖总结 ...综上所述,方法继承、方法重载和方法覆盖是Java面向对象编程中的三个重要概念。正确理解和运用这些概念能够帮助开发者编写出更加灵活、高效和可维护的代码。

    Java中的方法和变量在继承时的覆盖问题

    变量和方法覆盖和隐藏的不同:一个类的实例无法通过使用全局名或者强制自己转换为父类型,以访问父类中被隐藏的方法,然而强制转换子类为父类型之后,可以访问父类中被隐藏的变量。另外静态方法不能覆盖父类的实例...

    方法和变量在继承时的覆盖和隐藏问题

    在Java编程语言中,继承是面向对象程序设计的一个核心概念,它允许创建一个类(子类)来继承另一个类(父类)的属性和行为。...在编程中应当根据实际需求合理运用继承规则,并注意避免因为覆盖和隐藏带来的潜在问题。

    java中方法的继承,覆盖.doc

    当一个类(子类)继承另一个类(父类)时,子类会自动获得父类的所有非私有(public和protected)成员,包括字段和方法。这意味着子类可以访问并使用父类中的这些方法,而无需再次定义。这是实现代码复用和多态性的...

    EXT dojochina Ext类静态方法.rar

    EXT dojochina Ext类...综上所述,EXT dojochina Ext类静态方法的主题涵盖了EXT框架中类和静态方法的核心概念,以及它们在实际开发中的应用。学习和熟练掌握这些知识点,将有助于提升你在EXT开发中的效率和代码质量。

    2024面向对象高级静态和继承HM

    **定义**:通过继承,子类可以自动获得父类的所有非私有的属性和方法,并且可以根据需要覆盖或扩展这些属性和方法。 **示例代码**: ```java public class Animal { public void move() { System.out.println(...

    java实例方法被覆盖,静态方法被隐藏Explain(详解)

    在Java编程语言中,方法的覆盖(Overriding)和隐藏(Hiding)是面向对象特性的重要组成部分,它们涉及到类的继承关系以及方法的调用机制。下面将详细讲解这两个概念。 1. 实例方法的覆盖(Method Overriding) ...

    Java的静态方法调用.pdf

    然而,动态方法调用相对于静态方法调用在性能上可能存在劣势,因为它涉及到运行时的类型检查和方法查找。 本文提到的技术尝试通过静态程序分析来确定哪些方法调用可以静态绑定,以减少动态调度带来的性能开销。这种...

    C#中实现抽象类里建立静态方法

    静态方法不能被覆盖,因为它们是密封的(sealed),而抽象方法是设计为被子类覆盖的。因此,将静态方法放在抽象类中,可以确保这个方法不会被子类重写,保持其行为一致性。 以下是一个简单的示例,展示了如何在C#中...

    Java 继承和方法重写

    Java 继承是面向对象编程中的一个核心概念,它允许一个类...通过深入理解并灵活运用 Java 的继承和方法重写,可以编写出更具可维护性和扩展性的代码。在实际开发中,合理地利用这些特性,能有效提升软件的质量和效率。

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

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

    java学习笔记 继承 重载 覆盖

    继承允许子类继承父类的属性和方法,增强了代码的复用性。多态是指一个父类引用可以指向不同子类的实例,调用子类覆盖父类的方法。这样可以减少类间的耦合,使程序更具扩展性。 方法的重载(Overloading)是指在同...

    PHP使用静态方法的几个注意事项

    在PHP编程中,静态方法是一种特殊的方法类型,它不依赖于类的实例(对象)就能被调用。静态方法主要用于那些不需要访问类的实例变量或执行...在设计类和方法时,应考虑对象的状态和生命周期,以确定何时使用静态方法。

    java中的方法重载和覆盖的区别宣贯.pdf

    在Java中,方法重载(Overloading)和方法覆盖(Overriding)都是实现多态性的手段,但它们之间有着明显的区别。 方法重载(Overloading) 方法重载是指在同一个类中,可以定义多个名称相同但参数列表不同的方法。...

    asp.net 中静态方法和动态方法调用的区别实例分析

    但是,滥用静态方法可能会影响代码的可测试性和可维护性,因为静态方法无法被覆盖和重写,这限制了面向对象的多态性原则的使用。另一方面,实例方法则天然支持面向对象设计原则,比如封装、继承和多态。 总而言之,...

    16-1【SV精通3】类的方法和继承_动态对象_包的使用.zip

    继承是OOP中的一个重要特性,允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法。这有助于代码重用,并且可以构建层次结构,使得更具体的类可以扩展或修改通用类的行为。在Java中,我们使用关键字`...

Global site tag (gtag.js) - Google Analytics