学习了Java多态,那它具有什么优点?

阿里云教程2个月前发布
15 0 0

00:00

1.1.1.多态的好处

生活中使用多态,可以指代更广泛的范围;

在Java中,使用多态,也可以使变量的表明范围更广泛,可以提高代码的复用性和程序的扩展性(降低耦合性);

需求:描述并测试猫和狗的行为;

猫具有吃、叫和抓老鼠的功能;

狗具有吃、叫和看家的功能;

过去的做法:

public classDemo2 {

public static voidmain(String[]args) {

//创建一只猫

Catc=newCat();

//调用函数测试猫的行为

test(c);

//创建一条狗

Dogd=newDog();

//调用函数测试狗的行为

test(d);

}

private static voidtest(Dogd) {

//测试狗的吃的行为

d.eat();

//测试狗叫的行为

d.say();

//测试狗看家的行为

d.lookHome();

}

private static voidtest(Catc) {

//测试猫吃的行为

c.eat();

//测试猫叫的行为

c.say();

//测试猫抓老鼠的行为

c.catchMouse();

}

}

/*

需求:描述并测试猫和狗的行为;

猫具有吃、叫和抓老鼠的功能;

狗具有吃、叫和看家的功能;

*/

//定义一个类表明狗

classDog{

//吃

public voideat() {

System.out.println(“吃骨头”);

}

//叫

public voidsay() {

System.out.println(“汪汪……”);

}

//看家

public voidlookHome() {

System.out.println(“看家”);

}

}

//定义一个类表明猫

classCat{

//吃

public voideat() {

System.out.println(“吃小鱼”);

}

//叫

public voidsay() {

System.out.println(“喵喵……”);

}

//抓老鼠

public voidcatchMouse() {

System.out.println(“抓老鼠”);

}

}

问题:

第一,猫和狗之间存在一样功能;

其次:测试的功能函数,一个函数只能测试一种动物,而且每个测试函数的具体实现基本类似;那么每添加一个新的动物,就必须新写一个测试函数,挺麻烦;

解决办法:使用继承和多态技术:

学习了Java多态,那它具有什么优点?

public classDemo2 {

public static voidmain(String[]args) {

//创建一只猫

Animalc=newCat();

//调用函数测试猫的行为

test(c);

//创建一条狗

Dogd=newDog();

//调用函数测试狗的行为

test(d);

}

private static voidtest(Animalc) {

//测试动物吃的行为

c.eat();

//测试动物叫的行为

c.say();

//测试动物抓老鼠的行为

// c.catchMouse();

}

}

/*

需求:描述并测试猫和狗的行为;

猫具有吃、叫和抓老鼠的功能;

狗具有吃、叫和看家的功能;

*/

//为了提高代码的复用性,可以定义一个猫和狗的共同的父类动物类,然后让猫和狗继承动物类

abstract classAnimal{

public abstract voideat();

public abstract voidsay();

}

//定义一个类表明狗

classDogextendsAnimal{

//吃

public voideat() {

System.out.println(“吃骨头”);

}

//叫

public voidsay() {

System.out.println(“汪汪……”);

}

//看家

public voidlookHome() {

System.out.println(“看家”);

}

}

//定义一个类表明猫

classCatextendsAnimal{

//吃

public voideat() {

System.out.println(“吃小鱼”);

}

//叫

public voidsay() {

System.out.println(“喵喵……”);

}

//抓老鼠

public voidcatchMouse() {

System.out.println(“抓老鼠”);

}

}

学习了Java多态,那它具有什么优点?

学习了Java多态,那它具有什么优点?

© 版权声明

相关文章

暂无评论

none
暂无评论...