注册 登录
编程论坛 JAVA论坛

关于extends的一个小问题

the_second 发布于 2016-04-28 11:33, 2879 次点击
package Object;

public class Detergent extends Cleanser{
    public void scrub()
    {
        append("Detegent.scurb()");
        super.scrub();
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Detergent x = new Detergent();
        x.dilute();
        x.scrub();
        System.out.println(x);
        System.out.println("askjdjasdljal");
        Cleanser.main(args);
    }

}
class Cleanser
{
    private String s = "Cleanser";
    public void append(String a)
    {
        s = s+a;
    }
    public void dilute()
    {
        append("dilute()");
    }
    public void scrub()
    {
        append("scurb()");
    }
    public String toString()
    {
        return s;
    }
    public static void main(String[] args)
    {
        Cleanser x = new Cleanser();
        x.dilute();
        x.scrub();
        System.out.println(x);
    }
}
9 回复
#2
the_second2016-04-28 11:36
我这边是看JAVA编程思想上写的,但是我的输出
Cleanserdilute()scurb()
程序编译发现他只运行Cleanser类,而且我去掉Cleanser类中的main函数,编译器会报错
我文件的类名是Detergent
求助,谢谢
#3
hjxlj2016-04-28 18:07
楼主,谁给你的权力,把自己的包名定义为Object的?
#4
the_second2016-04-30 23:14
好吧
多谢了
#5
the_second2016-04-30 23:25
但是我换了一个package名
他还是原来的情况
求解
#6
不归散人2016-05-04 09:47
楼主,你的两个类是写在一个文件里面的吗?文件名是什么
#7
the_second2016-05-04 23:19
JAVA_CLASS->src->OBJECT_O
#8
the_second2016-05-04 23:19
java工程下的
#9
glxl2016-05-30 10:07
你把两个类写到同一个文件里头了在Eclipse下是会提示你要执行那个类的。
#10
zzjvslove2016-05-30 11:55
(1)java的关键字不要使用
(2)程序的运行结果是
D:\99.7_testj>javac Detergent.java
D:\99.7_testj>java Detergent
Cleanserdilute()Detegent.scurb()scurb()
askjdjasdljal
Cleanserdilute()scurb()

这个结果没有问题啊。第三句输出的是父类的调用父类的静态方法。
由子类去调用父类的方法、并且子类有重写的话,就会执行子类的方法。
拿本程序来说、如果子类去调用父类main方法、就会成死循环了。
如 Cleanser.main(args);  如改成  Detergent.main(args);      会成死循环。

请采纳
1