Pet类

Posted xiueer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pet类相关的知识,希望对你有一定的参考价值。

Code1

//: typeinfo/pets/Cat.java
package typeinfo.pets;

public class Cat extends Pet 
  public Cat(String name)  super(name); 
  public Cat()  super(); 
 ///:~

Code2

//: typeinfo/pets/Cymric.java
package typeinfo.pets;

public class Cymric extends Manx 
  public Cymric(String name)  super(name); 
  public Cymric()  super(); 
 ///:~

Code3

//: typeinfo/pets/Dog.java
package typeinfo.pets;

public class Dog extends Pet 
  public Dog(String name)  super(name); 
  public Dog()  super(); 
 ///:~

Code4

//: typeinfo/pets/EgyptianMau.java
package typeinfo.pets;

public class EgyptianMau extends Cat 
  public EgyptianMau(String name)  super(name); 
  public EgyptianMau()  super(); 
 ///:~

Code5

//: typeinfo/pets/ForNameCreator.java
package typeinfo.pets;
import java.util.*;

public class ForNameCreator extends PetCreator 
  private static List<Class<? extends Pet>> types =
    new ArrayList<Class<? extends Pet>>();
  // Types that you want to be randomly created:
  private static String[] typeNames = 
    "typeinfo.pets.Mutt",
    "typeinfo.pets.Pug",
    "typeinfo.pets.EgyptianMau",
    "typeinfo.pets.Manx",
    "typeinfo.pets.Cymric",
    "typeinfo.pets.Rat",
    "typeinfo.pets.Mouse",
    "typeinfo.pets.Hamster"
  ;    
  @SuppressWarnings("unchecked")
  private static void loader() 
    try 
      for(String name : typeNames)
        types.add(
          (Class<? extends Pet>)Class.forName(name));
     catch(ClassNotFoundException e) 
      throw new RuntimeException(e);
    
  
  static  loader(); 
  public List<Class<? extends Pet>> types() return types;
 ///:~

Code6

//: typeinfo/pets/Hamster.java
package typeinfo.pets;

public class Hamster extends Rodent 
  public Hamster(String name)  super(name); 
  public Hamster()  super(); 
 ///:~

Code7

//: typeinfo/pets/Individual.java
package typeinfo.pets;

public class Individual implements Comparable<Individual> 
  private static long counter = 0;
  private final long id = counter++;
  private String name;
  public Individual(String name)  this.name = name; 
  // 'name' is optional:
  public Individual() 
  public String toString() 
    return getClass().getSimpleName() +
      (name == null ? "" : " " + name);
  
  public long id()  return id; 
  public boolean equals(Object o) 
    return o instanceof Individual &&
      id == ((Individual)o).id;
  
  public int hashCode() 
    int result = 17;
    if(name != null)
      result = 37 * result + name.hashCode();
    result = 37 * result + (int)id;
    return result;
  
  public int compareTo(Individual arg) 
    // Compare by class name first:
    String first = getClass().getSimpleName();
    String argFirst = arg.getClass().getSimpleName();
    int firstCompare = first.compareTo(argFirst);
    if(firstCompare != 0)
    return firstCompare;
    if(name != null && arg.name != null) 
      int secondCompare = name.compareTo(arg.name);
      if(secondCompare != 0)
        return secondCompare;
    
    return (arg.id < id ? -1 : (arg.id == id ? 0 : 1));
  
 ///:~

Code8

//: typeinfo/pets/LiteralPetCreator.java
// Using class literals.
package typeinfo.pets;
import java.util.*;

public class LiteralPetCreator extends PetCreator 
  // No try block needed.
  @SuppressWarnings("unchecked")
  public static final List<Class<? extends Pet>> allTypes =
    Collections.unmodifiableList(Arrays.asList(
      Pet.class, Dog.class, Cat.class,  Rodent.class,
      Mutt.class, Pug.class, EgyptianMau.class, Manx.class,
      Cymric.class, Rat.class, Mouse.class,Hamster.class));
  // Types for random creation:
  private static final List<Class<? extends Pet>> types =
    allTypes.subList(allTypes.indexOf(Mutt.class),
      allTypes.size());
  public List<Class<? extends Pet>> types() 
    return types;
   
  public static void main(String[] args) 
    System.out.println(types);
  
 /* Output:
[class typeinfo.pets.Mutt, class typeinfo.pets.Pug, class typeinfo.pets.EgyptianMau, class typeinfo.pets.Manx, class typeinfo.pets.Cymric, class typeinfo.pets.Rat, class typeinfo.pets.Mouse, class typeinfo.pets.Hamster]
*///:~

Code9

//: typeinfo/pets/Manx.java
package typeinfo.pets;

public class Manx extends Cat 
  public Manx(String name)  super(name); 
  public Manx()  super(); 
 ///:~

Code10

//: typeinfo/pets/Mouse.java
package typeinfo.pets;

public class Mouse extends Rodent 
  public Mouse(String name)  super(name); 
  public Mouse()  super(); 
 ///:~

Code11

//: typeinfo/pets/Mutt.java
package typeinfo.pets;

public class Mutt extends Dog 
  public Mutt(String name)  super(name); 
  public Mutt()  super(); 
 ///:~

Code12

//: typeinfo/pets/Person.java
package typeinfo.pets;

public class Person extends Individual 
  public Person(String name)  super(name); 
 ///:~

Code13

//: typeinfo/pets/Pet.java
package typeinfo.pets;

public class Pet extends Individual 
  public Pet(String name)  super(name); 
  public Pet()  super(); 
 ///:~

Code14

//: typeinfo/pets/PetCreator.java
// Creates random sequences of Pets.
package typeinfo.pets;
import java.util.*;

public abstract class PetCreator 
  private Random rand = new Random(47);
  // The List of the different types of Pet to create:
  public abstract List<Class<? extends Pet>> types();
  public Pet randomPet()  // Create one random Pet
    int n = rand.nextInt(types().size());
    try 
      return types().get(n).newInstance();
     catch(InstantiationException e) 
      throw new RuntimeException(e);
     catch(IllegalAccessException e) 
      throw new RuntimeException(e);
    
   
  public Pet[] createArray(int size) 
    Pet[] result = new Pet[size];
    for(int i = 0; i < size; i++)
      result[i] = randomPet();
    return result;
  
  public ArrayList<Pet> arrayList(int size) 
    ArrayList<Pet> result = new ArrayList<Pet>();
    Collections.addAll(result, createArray(size));
    return result;
  
 ///:~

Code15

//: typeinfo/pets/Pets.java
// Facade to produce a default PetCreator.
package typeinfo.pets;
import java.util.*;

public class Pets 
  public static final PetCreator creator =
    new LiteralPetCreator();
  public static Pet randomPet() 
    return creator.randomPet();
  
  public static Pet[] createArray(int size) 
    return creator.createArray(size);
  
  public static ArrayList<Pet> arrayList(int size) 
    return creator.arrayList(size);
  
 ///:~

Code16

//: typeinfo/pets/Pug.java
package typeinfo.pets;

public class Pug extends Dog 
  public Pug(String name)  super(name); 
  public Pug()  super(); 
 ///:~

Code17

//: typeinfo/pets/Rat.java
package typeinfo.pets;

public class Rat extends Rodent 
  public Rat(String name)  super(name); 
  public Rat()  super(); 
 ///:~

Code18

//: typeinfo/pets/Rodent.java
package typeinfo.pets;

public class Rodent extends Pet 
  public Rodent(String name)  super(name); 
  public Rodent()  super(); 
 ///:~

以上是关于Pet类的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 接口问题

奥凯PET片材在生活中常见的应用

GIS中pet_Layer是啥

多个子类的继承操作(例文)

python 类__init__函数

Java抽象类和接口