package cn.jbit.epet.purview;

/**
 * 狗狗类,宠物的子类。
 */
public class Dog extends Pet {
    private String strain;// 品种

    /**
     * 有参构造方法。
     * @param name   昵称
     * @param strain   品种
     */
    public Dog(String name, String strain) {
        super(name); //此处不能使用this.name=name;
        this.strain = strain;
    }
    
    public void setStrain(String strain) {
        this.strain = strain;
    }
    public String getStrain() {
        return strain;
    }
    
    public void print(){
        super.print();
        System.out.println("我是一只"+this.getStrain()+"犬。");
    }
    
    /**
     * 测试不能被继承的情况 
     */
    public void test(){
        //System.out.println(name); // 不能继承private成员
        System.out.println(color); // 同包下,可以继承protected成员
        System.out.println(avoirdupois);  //同包下,子类可以继承默认访问权限的成员
        System.out.println(id);// 同包下,可以继承public成员
    }
}
package cn.jbit.epet.purview;

/**
 * 宠物类,狗狗和企鹅的父类。
 */
public class Pet {
    private String name = "无名氏";// 昵称
    private int health = 100;// 健康值
    private int love = 0;// 亲密度
    /*以下属性是测试访问权限及继承情况*/
    int avoirdupois=2; //重量
    protected String color; //颜色
    public int id=1001; //编号
    /**
     * 无参构造方法。
     */
    public Pet() {
        this.health = 95;
        System.out.println("执行宠物的无参构造方法。");
    }
    /**
     * 有参构造方法。
     * @param name  昵称
     */
    public Pet(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
    public int getHealth() {
        return health;
    }
    public int getLove() {
        return love;
    }
    /**
     * 输出宠物信息。
     */
    public void print() {
        System.out.println("宠物的自白:\n我的名字叫" + 
                this.name + ",我的健康值是" + this.health 
                + ",我和主人的亲密程度是" + this.love + "。");
    }
}
public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(new Pet().color);  //同包下,可以使用protected成员
        System.out.println(new Pet().id);// 同包下,可以使用public成员
    }

}