java面向对象程序设计之狐狸与兔子
程序员文章站
2022-06-30 20:01:51
Fox.breed()和Rabbit.breed()几乎一样Fox.breed()和Rabbit.breed()几乎一样,有什么好办法修改?注意Fox和Rabbit的breed()返回的具体类型不同。修改之前哪的代码://Animal类 public abstract Animal breed(); //Rabbit类 @Override public Animal breed() { Animal ret=null; if(sBreedable()&...
Fox.breed()和Rabbit.breed()几乎一样
Fox.breed()和Rabbit.breed()几乎一样,有什么好办法修改?注意Fox和Rabbit的breed()返回的具体类型不同。
修改之前的代码:
//Animal类 public abstract Animal breed(); //Rabbit类 @Override public Animal breed() { Animal ret=null; if(sBreedable()&&Math.random()<0.12) { ret=new Rabbit(); } return ret; } //Fox类 @Override public Animal breed() { Animal ret=null; if(sBreedable()&&Math.random()<0.5) { ret=new Fox(); } return ret; }
修改之后:
Animal类:
public Animal breed() { Animal ret=null; if(isBreedable()&&Math.random()<getValue()) { ret=getAnimal(); } return ret; } public abstract Animal getAnimal(); public abstract double getValue();
把其中的变量都变成抽象函数,实现的时候传回参数
Rabbit类实现:
@Override public Animal breed() { return super.breed(); } @Override public Animal getAnimal() { return new Rabbit(); } @Override public double getValue() { return 0.12; }
Fox类实现:
@Override public Animal breed() { return super.breed(); } @Override public Animal getAnimal() { return new Fox(); } @Override public double getValue() { return 0.5; }
更改之后的代码具有更好的可扩展性,内容可以直接在Animal里面加,不用分别在Rabbit和Fox单独加内容,消除了重复代码,这是一个良好的代码。
补一个Java关键字,为下一篇的注释做准备:
instanceof关键字,它是用来检验该对象是某个类的实例:
/*
author by runoob.com
Main.java
*/ import java.util.ArrayList; import java.util.Vector; public class Main { public static void main(String[] args) { Object testObject = new ArrayList(); displayObjectClass(testObject); } public static void displayObjectClass(Object o) { if (o instanceof Vector) System.out.println("对象是 java.util.Vector 类的实例"); else if (o instanceof ArrayList) System.out.println("对象是 java.util.ArrayList 类的实例"); else System.out.println("对象是 " + o.getClass() + " 类的实例"); } }
代码来自"菜鸟学java"
运行结果:对象是 java.util.ArrayList 类的实例
本文地址:https://blog.csdn.net/weixin_43688665/article/details/107690307
上一篇: 手机中的单反,美图V6在北京正式发布!售价5099起!
下一篇: 婚恋笑话与箴言