关于继承

  继承作为面向对象的重要特征之一,自然是面向对象的强大所在,合理的设计继承才能
发挥它的强大威力。
在对事物进行抽象的时候要对该事物的属性和操作进行分析,想明白它隶属于哪一个
类,即它 is-a 什么。

  把子类都有的操作和属性放在超类中,其他的操作和属性放在子类中

class Animal
{
  private String type;
  private String name;
  private int age;
  private int weight;
  Animal(){
  type=null;
  name=null;
  age=0;
  weight=0;
}
  Animal(String type,String name,int age,int weight){
    this.type=type;
    this.name=name;
    this.age=age;
    this.weight=weight;
  }
  public void eat(){
    System.out.println("anmal eat");
  }
  public void breath(){
    System.out.println("animal breath");
  }
  public void sleep(){
    System.out.println("animal sleep");
  }
}

  它的子类任何动物不管是 Tiger 类还是 Fish 类可以有名字(age)、类型(type)、年龄(age)和体重(weight),都有操作吃饭(eat)、呼吸(breath)和睡觉(sleep)。而对于在子类 Tiger 中可以定义一个操作奔跑(run),由于并不是所有的动物都会奔跑,所以不适合把 run 放入 Animal 中。
把成员变量设为私有的而不使用 protected 和 public 的。把成员变量设为 private,并对每个成员变量添加 set 和 get 方法;否则的话通过继承,子类就可以访问父类的属性,这有违面向对象的封装性。
  覆盖方法的时候应该不违背原来的定义。在覆盖父类的方法时应该尽量保持原来的操作,例如在 Animal 类中的 breath 方法,在 Tiger 类中重写的时候就要实现老虎的呼吸动作,而不应该实现它的吃饭操作。

你可能感兴趣的:(关于继承)