爪哇 2博客
 爪哇 2博客

我们可以覆盖竞彩篮球分析中的静态方法吗

不,我们不能覆盖 静态的 爪哇 中的方法。静态方法是可以在不创建类对象的情况下调用的方法,它们是类级别的方法。

另一方面,如果子类具有与基类相同的方法签名,则称为 方法覆盖。它的执行在运行时决定。

以下是我们无法在竞彩篮球分析中覆盖静态方法的原因:-

  • 静态方法是属于该类的那些方法,它们不属于对象,并且在覆盖时,对象决定要调用的方法。
  • 方法覆盖是动态(运行时)发生的,这意味着要在运行时根据用于调用的对象决定要执行的方法,同时静态查找静态方法(编译时)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
组织 . Arpit . 爪哇 2blog;
 
  显示
{
    上市 静态的 虚空 您好 ()    //静态方法
    {
        系统..打印(“你好,早上好”);
    }
}
  显示讯息 延伸 显示
{
 
    上市 静态的 虚空 您好 ()      //在派生类中重新定义基类静态方法
    {
        系统..打印(“大家好”);
    }
}
上市 显示讯息
{
    上市 静态的 虚空 主要 ( args [])
    {
        显示 d= 显示();     //创建基类对象
        d. 您好 ();
 
        d= 显示讯息();    
        //基类引用引用派生类对象,根据覆盖规则,应调用DisplayMessage 您好 ()
 
        d. 您好 ();       //但它调用Display类hello()
 
        显示讯息 ds = 显示讯息();   //创建派生类对象
         ds . 您好 ();
    }
}
 

当您在程序上方运行时,将得到以下输出。
输出:

你好,早上好
你好,早上好
大家好

根据方法重写的规则,方法调用在运行时由对象类型解决。因此,在我们上面的示例中,第二个示例中的d.hello()应该调用DisplayMessage类的hello()方法,因为Display类的引用变量引用DisplayMessage的对象,但它本身调用Display类hello()。这是因为在编译时解析了静态方法。

所以如果派生类’s的静态方法具有与基类相同的签名’s静态方法,称为方法隐藏而不是方法覆盖。

分享这个

作者

关注作者

相关文章

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

订阅我们的新闻

获取质量教程到您的收件箱。现在订阅。


成为朋友

©2020 爪哇 2博客