| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3564 人关注过本帖
标题:子类覆盖了父类的方法,为什么还能够调用父类的该方法
取消只看楼主 加入收藏
wancy
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-5-27
结帖率:25%
收藏
已结贴  问题点数:20 回复次数:2 
子类覆盖了父类的方法,为什么还能够调用父类的该方法
package wancy;

public class Strange
{
    int a=2;
    static int b=3;
    void f()
    {
        System.out.println("F");
    }
    public static void main(String[]args)
    {
        Str str=new Str();
        
        System.out.println(str.a);
        Strange s=str;
        System.out.println(s.a);
        str.f();
        s.f();
        
        
    }
}

class Str extends Strange
{
    void f()
    {
        System.out.println("Z");
    }
    Str()
    {
        a=21;b=33;
        System.out.println(this.a);
        System.out.println(this.b);
        System.out.println(super.a);
        System.out.println(super.b);
        this.f();
        super.f();
    }
}

结果:21
33
21
33
Z
F
21
21
Z
Z

结果为什么不是21 33 21 33 Z Z 21 21 Z Z,既然父类f()方法被覆盖了,为什么不创建父类对象的情况下还能通过super.f()调用父类的f()方法?
搜索更多相关主题的帖子: package public 
2016-08-08 21:33
wancy
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-5-27
收藏
得分:0 
回复 3楼 yft508
但是子类中的方法覆盖了父类的方法,在new的时侯,创建对象时,子类的父类那部分方法被覆盖了,没有了,又没有创建(new 父类)的实例,那么super.f()又是怎样调用父类的方法的呢?
2016-08-10 15:27
wancy
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2016-5-27
收藏
得分:0 
回复 2楼 砖家的谎言
没创建对象,怎么存在?
2016-08-10 15:28
快速回复:子类覆盖了父类的方法,为什么还能够调用父类的该方法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014900 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved