Java知识点问题,网上搜不到

Java程序中没有父类,怎么重写方法

img


为什么能这样

这两个方法属于Object,而Object是超类,即所有类的父类

你对重写可能有啥误解,重写不一定需要继承。来,我给你几个示例代码你就明白了:

public class Test
{
    public String getOut()
    {
       return "getOut方法被成功执行了!";
    }
}

这是Test类,里面有一个getOut方法,方法返回一个字符串,如果我们创建一个类,并调用这个方法,可以这样写:

public class Test2
{
    public static void main(String[] args)
    { 
        var e = new Test();//创建对象e,指向类Test,这个对象e可以使用Test类中的getOut方法
        System.ou.println(e.getOut());
    }
}

那如果我要重写getOut方法,咋办呢?
这样写:

public class Test2
{
    public static void main(String[] args)
    { 
        var e = new Test2();
/*创建对象e,指向类Test2
 *注意,这里的对象指向Test2,也就是当前这个类。那他就不能使用Test类的方法了
 *这个时候,我们需要在Test2这个类中写入一个getOut方法
 *这就叫重写,当然重写的应用不止于此,如果你觉得Test类中的getOut方法不能返回你所需要的值
 *比如我想让他返回字符串”Hi“,但是Test类中又有依赖Test类的getOut方法返回的值的代码,这个时候不能直接修改Test类的
 *getOut方法,于是,我们就需要重写一个getOut方法
 */
        System.ou.println(e.getOut());//此时打印的结果为”Hi“
    }
//在Test2类中重写的一个getOut方法,他只能被Test2的对象e调用。而不能被Test类中的任何一个指向Test类的对象调用
//因为Test类中的对象指向Test,又因为Test类本身包含getOut方法,那么Test类中的对象调用getOut方法返回的值只能是Test类中的方法的值
//在这种情况下,即使Test类继承了Test2类,Test类的对象依旧无法调用Test2类的方法。因为他们指向不同的类,并且Test类含有相同的方法,这就相当于Test类重写了Test2类中的getOut方法
    public String getOut()
    {
        return "Hi";
    }
}

而我们知道,任何一个类都继承Object类,而Object类中含有你书上写的hashcode方法,如果你对这个方法感到不满意,你就需要重写hashcode方法。于是就像书上那样,重写了hashcode方法,这样在本身的类中的对象调用hashcode方法就不会调用到Object类中的hashcode方法。这就是重写
OK,关于重写的知识我已经将明白了,如果你觉得有帮助的话,可以采纳一下,你的采纳就是我们这些回答者的动力qwq,如果还不会可以回复我,我给你深入讲一下,或者加一下QQ,咱俩私聊,以后有不会的也可以问我,欢迎采纳或者提出疑问哦(~ ̄▽ ̄)~