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
非静态方法 按重写规则调用相应的类实现方法,而静态方法只与类相关。
所谓静态,就是在运行时,虚拟机已经认定此方法属于哪个类。
专业术语有严格的含义,用语要准确."重写"只能适用于实例方法.不能用于静态方法.对于静态方法,只能隐藏(刚才的例子可以重写那只是形式上的 ,并不满足多态的特征,所以严格说不是重写)。
静态方法的调用不需要实例化吧.. 不实例化也就不能用多态了,也就没有所谓的父类引用指向子类实例.因为不能实例化 也就没有机会去指向子类的实例。所以也就不存在多态了。
分享到:
相关推荐
综上所述,静态方法不能被重写,只能被隐藏。这是因为静态方法属于类级别,而不是对象级别。在实际应用中,我们应该注意区分静态方法和实例方法的特性及其调用方式,确保正确理解和使用这些特性来满足特定的设计需求...
静态方法在Java中属于类级别,而非实例级别,这导致了它们在继承链中不能被重写。 静态方法是与类相关的,而不是与类的实例相关。当一个类的静态方法被调用时,编译器会根据调用时的类类型来确定调用哪个方法,而...
- **抛出异常**:重写方法抛出的异常类型不能大于被重写方法的异常类型。 - **修饰符**:子类方法不能是 private 或 static,否则不属于重写,而是隐藏。 3. **@Override 注解**: 使用 `@Override` 注解可以...
虽然这不是真正意义上的重写,因为静态方法在Java中不能被覆盖,但子类可以拥有与父类静态方法相同签名的静态方法。这样做可能会导致命名冲突,因此在设计时需要特别注意。如果在子类中调用同名的静态方法,Java...
这种技术的优势在于,静态URL对于搜索引擎更加友好,更容易被索引,同时也能提升用户体验。 实现Java伪静态URL重写通常依赖于第三方库,例如微软公司的UrlRewriter.jar组件。该组件是一个URL重写工具,它提供了一个...
静态方法可以被子类继承,但是不能被重写。子类可以继承父类的静态方法,但是不能覆盖父类的静态方法。 需要注意的是,静态方法是属于类的,而不是对象的。静态方法可以被子类继承,但是不能被重写。这是 Java 编程...
静态方法可以访问另一个类或同一个类的静态数据成员和静态方法,不能访问非静态方法和变量。此外,静态方法可以重写任何静态数据成员的值。 二、非静态方法 非静态方法可以访问静态数据成员和静态方法,也可以访问...
总之,Java中的静态方法不能被重写,只能被隐藏。静态方法的调用在编译时就已经确定,基于方法调用时的类引用,而不是对象的实际类型。如果想要实现类似重写的效果,应将方法改为非静态,并确保遵循Java的继承和多态...
2. 被final关键字修饰的方法不能被重写:如果父类方法被final关键字修饰,那么子类不能重写该方法。 3. 被static修饰的方法不能被重写:如果父类方法被static修饰,那么子类不能重写该方法。 但是,如果子类中定义了...
1、重载 方法的重载是同一个类中多态性的一种表现。 方法重载须遵循如下两条... (3)子类方法不能缩小所重写方法的访问权限。 (4)子类方法不能抛出比所覆盖方法更多的异常。 (5)静态方法不存在重
此外,子类方法的访问修饰符不能比父类更严格,且不能声明为private。`@Override`注解用于明确表示该方法是重写父类的方法,这有助于编译器检查方法签名是否匹配,提高代码的可读性和安全性。 其次,我们要了解**...
实现Java页面静态化的常见方法有两种: 1. **预渲染**:在系统启动或者后台定期任务中,根据特定的URL,通过Java代码获取数据并生成HTML文件,存储在文件系统或CDN上。这种方式适用于内容相对固定,更新不频繁的...
4. 重写方法的访问权限不能小于被重写的方法,例如,父类的`public`方法不能被子类的`private`方法重写。 5. 重写方法在子类中可以改变父类方法的实现,但不能改变方法的签名(返回类型和参数列表)。 理解这些概念...
5. **权限修饰符**:重写时,重写方法的访问权限不能小于被重写方法的访问权限。 6. **方法调用**:重载是根据传递的实际参数来确定;重写则是根据对象的实际类型(多态性)来确定。 7. **异常处理**:重写方法抛出...
- **final关键字**:如果父类方法被声明为`final`,则子类无法重写该方法。而重载与`final`关键字无关。 - **static与非static**:静态方法不能被重写,但可以重载。非静态方法可以重写和重载。 理解并熟练掌握方法...
静态变量在子类中不是被覆盖而是被重新定义,而静态方法则可以被继承但不能被覆盖。 - 这些特性对于理解Java中的类继承机制非常重要,特别是在处理复杂的类层次结构时。了解这些规则有助于编写更清晰、更易于维护的...
### Java代码静态检测规则概述 Java作为一种广泛应用的编程语言,在软件开发过程中,为了确保代码的质量、可维护性和安全性,采用代码静态检测工具是至关重要的。本文将详细介绍一系列针对Java代码的静态检测规则,...
6. 静态方法不能被非静态方法重写。 在实际编程中,重载允许我们在一个类中创建具有相同名称但行为不同的方法,而重写则允许我们在子类中修改或扩展父类的行为,以适应特定的子类需求。这两者都是多态性的重要体现...
2. **URL重写**:改变URL的显示方式,但不改变其实际功能。 3. **urlrewrite框架**:一个用于URL重写的Apache Tomcat过滤器,支持伪静态等操作。 4. **urlrewrite.xml配置**:定义URL重写规则的文件,包括输入URL...
4. **URL重写**:为了使用户仍然可以通过原有的动态URL访问静态页面,我们需要进行URL重写。这通常通过Apache的mod_rewrite模块或者Java的Filter实现,将请求从动态路径转向静态文件。 5. **缓存策略**:生成的静态...