package com.abc;
abstract class Pet{
private String name;
public abstract void cry();
public void SetName(String n) {
name = n;
}
}
interface Cry{
public abstract void cry_in();
}
class Dog extends Pet implements Cry{
private String furColor;
Dog(String n, String c) {
SetName(n);
furColor = c;
}
public void cry() {
System.out.println("汪汪汪");
}
public void cry_in() {
System.out.println("汪汪汪");
}
}
class Cat extends Pet implements Cry{
private String eyesColor;
Cat(String n, String c) {
SetName(n);
eyesColor = c;
}
public void cry() {
System.out.println("喵喵喵");
}
public void cry_in() {
System.out.println("喵喵喵");
}
}
class Girl{
private String name;
private Pet pet;
Girl(String n, Pet p){
name = n;
pet = p;
}
public void myPetCry() {
pet.cry();
}
public void myPetCry_in() {
Cry c = (Cry)pet;
c.cry_in();
}
}
public class TestAbstract {
public static void main(String[] args) {
// TODO Auto-generated method stub
Cat c = new Cat("Tom", "gray");
Dog b = new Dog("Kaier", "black");
Girl l1 = new Girl("Rose", c);
Girl l2 = new Girl("Grase", b);
l1.myPetCry();
l2.myPetCry();
l1.myPetCry_in();
l2.myPetCry_in();
}
}