animal是个抽象方法,Cat 和Dog extends 这个就是用的多态
*/
package Test
public class Test{
public static void main(String[] args){
Feeder feeder = new Feeder()
feeder.feedAnimals()
}
}
abstract class Animal{
public abstract void eat(String s)
}
class Dog extends Animal{
private final String FOOD = "bone"
@Override
public void eat(String s){
if (s == FOOD)
System.out.println("Dog is eating bones")
else
System.out.println("Not "+this.FOOD+", Dog don't want to eat")
}
}
class Cat extends Animal{
private final String FOOD = "fish"
@Override
public void eat(String s){
if (s == FOOD)
System.out.println("Cat is eating fishes")
else
System.out.println("Not "+this.FOOD+", Cat don't want to eat")
}
}
class Feeder{
private final String[] FOODS = {"fish", "bone", "shit"}
private Animal cat
private Animal dog
Feeder(){
dog = new Dog()
cat = new Cat()
}
public void feedAnimals(){
System.out.println("Feeding animals...")
String food
for(int i = 0 i< FOODS.length i++){
food = FOODS[i]
if(food == "fish")
this.cat.eat(food)
else if(food == "bone")
this.dog.eat(food)
else{
System.out.println("Not Fishes or Bones, is "+ food)
}
}
System.out.println("Done!")
}
}
public class Run {public static void main(String[] args) {
Master master = new Master()
master.feedDog("鸡骨头")
master.feedCat("鸡骨头")
}
}
class Master {
private Pet mPet
private Food mFood
public void feedCat(String food) {
mPet = new Cat()
mFood = new Food(food)
mPet.eat(mFood)
}
public void feedDog(String food) {
mPet = new Dog()
mFood = new Food(food)
mPet.eat(mFood)
}
}
class Dog extends Pet{
@Override
public void eat(Food food) {
System.out.println("正在喂小狗吃"+food.getFood())
if (food.getFood().matches(Food.BONE)) {
System.out.println("小狗正在吃"+food.getFood()+"!")
}else {
System.out.println("但是小狗不喜欢吃"+food.getFood()+"!")
}
}
}
class Cat extends Pet{
@Override
public void eat(Food food) {
System.out.println("正在喂小猫吃"+food.getFood())
if (food.getFood().matches(Food.FISH)) {
System.out.println("小猫正在吃"+food.getFood()+"!")
}else {
System.out.println("但是小猫不喜欢吃"+food.getFood()+"!")
}
}
}
class Food {
public final static String BONE = ".*骨.*"
public final static String FISH = ".*鱼.*"
private String food
public String getFood() {
return food
}
public void setFood(String food) {
this.food = food
}
public Food(String food) {
this.food = food
}
}
class Pet {
public void eat(Food food) {
}
}
public class Person {public static void main(String args[]) {
Animal a1 = new Animal("猫","小花","鱼")
Animal a2 = new Animal("狗","旺财","骨头")
a1.eat()a2.ert()
}
}
class Animal {
String species
String animalName
String foodName
Animal(String species,String animalName,String foodName) {
this.species = species
this.animalNam e= animalName
this.foodName = foodName
}
public void eat() {
System.out.print("我的"+species+","+animalName +" 吃了 :"+foodName)
}
}
//我也才学java不到一个月,我就能理解这么多
//还可以写继承的。亦可以写成多线程的。
//继承就是把Animal类当父类,再写两个类继承它。这里又可以复习多态,哈哈。
//多线程就是同事喂这俩动物。