java子类父类super用法

问题如图所示

img


下面是我写的代码
A.java或B.java或C.java代表文件名
因为疫情嘛,全部寝室呆着,然后我去志愿搬饭了,没听ls讲,只只会写这几行,也不知道对错,求各位ls解答,如果可以的话,简单加两行代码解释一下,感激不尽,祝每一位程序员虎年大吉行大运。

A.java
public class cat{
public cat(){
System.out.println("吃老鼠");
}
}

B.java
public lcat extends cat{
public eat(){
System.out.println("喝奶");
}
}

C.java
public class C{
public static void main(String[] args){
M a=new M();
}
}

public class cat{
public void eat(){
System.out.println("吃老鼠");
}
}
B.java
public lcat extends cat{
public void eat(){
System.out.println("喝奶");
}
}

C.java
public class C{
public static void main(String[] args){
lcat a=new lcat ();
a.eat()
}
}

这样子类覆盖父类的方法了 写子类对象输出的应该是喝奶啊

给你改了下,类用大写。
望采纳!


A.java
public class Cat{
public cat(){
System.out.println("吃老鼠");
}
}
B.java
public Lcat extends cat{
public eat(){
System.out.println("喝奶");
}
}

C.java
public class C{
public static void main(String[] args){
  Cat cat =new Lcat ();//父类指向子类
}
}

有一说一,可能你的题目就是不对的,子类里继承了父类的eat方法,要是子类的eat是喝奶,那么这就意味着已经重写了父类的eat方法,如果要让子类输出吃老鼠,只能重写eat的时候使用super.eat,那么打出来就既有吃老鼠,又有喝奶,不可能只有吃老鼠,而没有喝奶,除非子类的喝奶是另一个方法名,比如eat1(),不知你懂了没

public class M  {
    public static void main(String[] args) {
        //前面的Cat c是父类,是一个类类型或引用类型,后面的new Lcat是子类对象,也就是所谓的“父类引用指向子类对象”
        Cat c = new Lcat();
        c.eat();
    }
}
class Cat{
    public void eat() {
        System.out.println("吃老鼠");
    }
}

class Lcat extends Cat{
    
    //可以看到这里我的@Override就是Lcat子类重写了父类的方法,且只能重写一次
    @Override
    public void eat() {
        //这句super.eat()是直接调用父类即Cat的eat方法,所以会“吃老鼠”
        super.eat();
        //下面这句就是Lcat自己的eat方式,除了会“吃老鼠”还可以“喝奶”
        System.out.println("喝奶");
    }
}

运行结果

img