2 arvin ghost Arvin_ghost 于 2015.06.04 21:31 提问

JAVA 子类方法都可以使用super吗

是不是在子类中的方法都可以使用super来调用父类的同名方法?
不仅仅是构造方法?

4个回答

tongyi55555
tongyi55555   2015.06.04 22:26
已采纳

除了私有方法,其他都是可以调用的,public 和protected不多说了,default的看下面的例子就行了,已经通过运行了。另外就是不要用到static修饰的变量、方法和代码块中。

public class Country {

    String name;

    void value() {
        name = "China";
    }
}

public class City extends Country {

    String name;

    void value() {
        name = "beijing";
        super.value();
        System.out.println("子类City的name:" + name);
        System.out.println("父类Country的name:" + super.name);
    }

    public static void main(String[] args) {
        City c = new City();
        c.value();
    }
}

bdmh
bdmh   Ds   Rxr 2015.06.04 21:33

私有方法不能调用,public和protected的可以

Arvin_ghost
Arvin_ghost default也不可以?
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.06.04 21:33

必须是公有的、保护的,并且非静态的方法才行。

LogicTeamLeader
LogicTeamLeader 回复caozhy: sorry,记错了。
2 年多之前 回复
caozhy
caozhy 回复LogicTeamLeader: 当然可以。
2 年多之前 回复
LogicTeamLeader
LogicTeamLeader virtual方法肯定不行吧,哈哈。
2 年多之前 回复
LogicTeamLeader
LogicTeamLeader   2015.06.04 22:11

我就说说不能调用的情况吧:
1.private方法肯定不能调用,因为子类无法访问父类的private方法;
2.static方法不能调用,static方法不会被继承的,所有父类、子类共用一份;
3.virtual方法不能调用,因为这个方法就没有实现;

LogicTeamLeader
LogicTeamLeader 回复Arvin_ghost: 还真没有啊,哈哈。C++和Java混着用都糊涂了。
2 年多之前 回复
LogicTeamLeader
LogicTeamLeader 回复Arvin_ghost: 记不清了,我查查啊。
2 年多之前 回复
Arvin_ghost
Arvin_ghost 斗胆一问……Java中有virtual吗?
2 年多之前 回复
LogicTeamLeader
LogicTeamLeader 回复caozhy: 对对
2 年多之前 回复
Arvin_ghost
Arvin_ghost 什么?JAVA中有virtual方法这个东西吗?
2 年多之前 回复
caozhy
caozhy virtual方法没有实现?抽象方法才没有实现。虚方法只是可以被重写的方法而已。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!