首先我们从一道经典的面向对象题目理解:一头母牛一年生一头小牛,一头小牛过四年也每年生一头小牛,照此推算,20年后一共有多少头牛?
牛:为一个具体对象。
牛:属性:年龄
按照题意可知:这头牛的年龄只要达到4岁就能开始生小牛
那首先我们先写一个小牛类:没过一年生一头小牛,这里面应该有个方法记录小牛的年龄,和新增的小牛
public void cow(){
private int age;
public cow(int age){
this.age=age;
}
public void birthday(ArrayList<cow> cows){
age++;
if(age>=4){//如果牛龄达到4岁,new一个新的小牛
cows.add(new cow(0));
}
}
}
[点击并拖拽以移动]
然后是主程序:先对母年进行实例化
public class beef(){
ArrayList<cow> cows=new ArrayList<cow>();
cows.add(new cow(4));
for(int i=0;i<20;i++){
//每次都要重新new一个list用来记录新增的小牛,相当于一个容器存储
ArrayList<cow> newcows=new ArrayList<cow>();
for(Cow cow:cows){
cow.birthday(newcows);
}
//将所有的牛都加到这个cows中
cows.addAll(newcows);
}
System.out.println("二十年共有牛 " + cows.size() + " 头。");
}
[点击并拖拽以移动]