第8章 包及访问控制权限

   1、

   项目的大致框架截图为:

   

   代码如下:

package li.a.yun.inter;

public interface Pet {
    public String getName();
    public String getColor();
    public int getAge();
}
package li.a.yun.entity;

import li.a.yun.inter.Pet;

public class Cat implements Pet {
    private String name;
    private String color;
    private int age;
    
    public Cat(String name, String color, int age) {
        this.name = name;
        this.color = color;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
package li.a.yun.entity;

import li.a.yun.inter.Pet;

public class Dog implements Pet {
    private String name;
    private String color;
    private int age;
    
    public Dog(String name, String color, int age) {
        this.name = name;
        this.color = color;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
package li.a.yun.util;

import li.a.yun.inter.Pet;

public class PetShop {
    private Pet[] pets;
    private int foot = 0;
    
    public PetShop(int len) {
        if(len <= 0)
            throw new RuntimeException("宠物商店必须至少存在一种宠物");
        this.pets = new Pet[len];
    }
    
    public boolean add(Pet p) {
        boolean isAdd = false;
        if(foot != pets.length) {
            pets[foot] = p;
            foot++;
            isAdd = true;
        } else {
            throw new RuntimeException("宠物商店已满,不能继续添加宠物了");
        }
        return isAdd;
    }
    
    /*
     * 根据宠物的关键字查找到相应的宠物信息
     */
    public Pet[] search(String key) {
        Pet[] p = null;
        int count = 0;
        
        for(int i = 0; i < this.pets.length; i++) {
            if(this.pets[i] != null) {
                if(this.pets[i].getName().indexOf(key) != -1 ||
                    this.pets[i].getColor().indexOf(key) != -1)
                    count++;
            }
        }
        
        p = new Pet[count];
        
        for(int i = 0, f = 0; i < this.pets.length; i++) {
            if(this.pets[i] != null) {
                if(this.pets[i].getName().indexOf(key) != -1 ||
                    this.pets[i].getColor().indexOf(key) != -1) {
                    p[f] = this.pets[i];
                    f++;
                }
            }
        }
        
        return p;
    }
}
package li.a.yun.test;

import li.a.yun.entity.Cat;
import li.a.yun.entity.Dog;
import li.a.yun.inter.Pet;
import li.a.yun.util.PetShop;

public class Test {

    public static void main(String[] args) {
        PetShop ps = new PetShop(5);
        ps.add(new Cat("白猫", "黑色的", 2));
        ps.add(new Cat("黑猫", "黑色的", 3));
        ps.add(new Cat("花猫", "花色的", 3));
        ps.add(new Dog("拉布拉多", "黄色的", 3));
        ps.add(new Dog("金毛", "金色的", 2));
        //System.out.println(ps.add(new Dog("黄狗", "黑色的", 2)));
        print(ps.search("黑"));
    }
    private static void print(Pet[] pets) {
        for(int i = 0; i < pets.length; i++) {
            if(pets[i] != null) {
                System.out.println(pets[i].getName()+","+pets[i].getColor()+","+pets[i].getAge());
            }
        }
    }
}
原文地址:https://www.cnblogs.com/yerenyuan/p/5244942.html