A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

代码一:
public static void main(String[] args) {
                Dog d = new Dog();
                d.eat();
        }
}
class Animal {
        public void eat(){
                System.out.println("动物吃饭");
        }
}
class Dog extends Animal{
        public void eat(){
                super.eat();
                System.out.println("狗吃肉");
        }
}
输出: 动物吃饭    狗吃肉

代码二:
        public static void main(String[] args) {
                Dog d = new Dog();
                d.eat();
        }
}
class Animal {
        public void eat(){
                System.out.println("动物吃东西");
        }
}
class Dog extends Animal {
        public void eat(Animal a){       
                a.eat();
                System.out.println("狗吃肉");
        }
}
输出 :   动物吃东西


5 个回复

倒序浏览

第二代码eat函数并没有覆盖,eat函数重载了
回复 使用道具 举报
代码2  调用eat方法没有走子类的,因为子类并没有这个方法,没有重写,找不子类就去找了父类的输出,子类的eat(有参数),并没有调用它
回复 使用道具 举报
本帖最后由 ly631960324 于 2015-11-10 22:52 编辑

1. 函数重载一个类中声明了多个同名的方法,但有不同的参数个数和参数类型。
2. 函数重写是指在子类中声明与父类同名的方法,从而覆盖了父类的方法。

这个eat()方法不构成重载,也不是重写,仅仅是单纯的子类继承了父类的方法,并且调用了该方法
回复 使用道具 举报
哈哈,顶个贴
回复 使用道具 举报
顶一个  有收获
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马