问题如图所示
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("喝奶");
}
}
运行结果