java类的继承当中,根据类的继承关系,可以产生一个子类,子类继承父类所有的变量和方法。
子类对父类中的方法进行扩展和修改,就是我们所说的方法重写。
在Java中覆盖继承父类的方法就是通过方法的重写来实现的。所谓方法的重写是指子类中的方法与父类中继承的方法有完全相同的返回值类型、方法名、参数个数以及参数类型。
如下代码
package com.zhy.write; class Animal{ public void eat(){ System.out.println("动物吃食物"); } } class Dog extends Animal{ public void eat(){ System.out.println("狗吃肉"); } } public class Test { public static void main(String[] args) { Animal a = new Animal(); // Animal 对象 Animal b = new Dog(); // Dog 对象 a.eat();// 执行 Animal 类的方法 b.eat();//执行 Dog 类的方法 } } //运行结果 //动物吃食物 // 狗吃肉
上知b的类型是Animal但是可以运行Dog类的eat方法。
但注意Animal执行的只能是子类继承了的父类中含有的方法。
package com.zhy.write; class Animal{ public void eat(){ System.out.println("动物吃食物"); } } class Dog extends Animal{ public void eat(){ System.out.println("狗吃肉"); } public void drink(){ System.out.println("狗喝水") } } public class Test { public static void main(String[] args) { Animal a = new Animal(); // Animal 对象 Animal b = new Dog(); // Dog 对象 a.drink() a.eat();// 执行 Animal 类的方法 b.eat();//执行 Dog 类的方法 } }
如上图代码,虽然a属于Animal类但是他用的是Dog类中drink的方法,所以他会报错。
注意1.父类方法的参数列表必须完全与被子类重写的方法的参数列表相同,否则不能称其为重写而是重载。
2.父类的返回类型必须与被子类重写的方法返回类型相同,否则不能称其为重写而是重载。
3.父类中private修饰的方法不能被重写。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)