方法的覆盖简单举例

覆盖是指父子类之间的关系,当子类继承父类中所有可能被子类访问的成员方法时,如果子类的方法名与父类的方法名相同,那么子类就不能继承父类的方法,此时称为子类的方法覆盖了父类的方法。覆盖体现了子类补充或者改变父类方法的能力,通过覆盖,可以使一个方法在不同的子类中表现出不同的行为。
下面通过一个具体的实例介绍如何实现方法的覆盖。
本实例主要实现定义一个动物类Animal及它的子类Bird,具体步骤如下:
(1)创建一个名称为Animal的类,在该类中声明一个成员方法cry(),具体代码如下:
public class Animal{
public Animal(){}
public void cry(){
System.out.println("动物发出叫声!");
}
}

(2)创建一个Animal类的子类Dog类,在该类中覆盖了父类的成员方法cry(),具体代码如下:
public class Dog extends Animal{
public Dog(){}
public void cry(){
System.out.println("狗发出汪汪的叫声!");
}
}

(3)创建一个Animal类的子类Cat类,在该类中覆盖了父类的成员方法cry(),具体代码如下:
public class Cat extends Animal{
public Cat(){}
public void cry(){
System.out.println("猫发出喵喵的叫音!");
}
}

(4)创建一个Animal类的子类Cattle类,在该类中不定义任何方法,具体代码如下:
public class Cattle extends Animal{}

(5)创建一个名称为Zoo的类,在该类的main() 方法中创建子类Bird的对象并为该对象分配内存,然后对象调用该类的成员方法,具体代码如下:
public class Zoo{
public static void main(String args[]){
Dog dog = new Dog();
System.out.println("执行dog.cry();语句时的输出结果:");
dog.cry();
Cat cat = new Cat();
System.out.println("执行cat.cry();语句时的输出结果:");
cat.cry();
Cattle cattle = new Cattle();
System.out.println("执行cattle.cry();语句时的输出结果:");
cattle.cry();
}
}

(6)运行本实例的结果如下:
[color=blue]执行dog.cry();语句时的输出结果:
狗发出汪汪的叫声!
执行cat.cry();语句时的输出结果:
猫发出喵喵的叫音!
执行cattle.cry();语句时的输出结果:
动物发出叫声![/color]
从上面的运行结果中可以看出,由于Dog类和Cat类都重载了父类的方法cry(),因此执行的是子类中的cry()方法,因为Cattle类没有重载父类的方法,所以执行的是父类中的cry()方法。

注意:
在进行方法覆盖时,需要注意一下内容:
●子类不能覆盖父类中声明为final或者static的方法。
●子类必须覆盖父类中声明为abstract的方法,或者子类也应该声明为abstract。
●子类覆盖父类中的同名方法时,子类的方法声明也必须和父类中被覆盖的方法声明一样。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值