1
理解继承
 

在设计继承肘,你会把共同的程序代码放在某个类中,然后告诉其他的类说此类是它们的父类. 当某个类继承另个类的时候也就是子类继承自父类。

2
继承范例
1
   
    范例一
 

 

public class Doctor {
     boolean worksAtHostpital;
     void treatPatient() {
         //执行检查
     }
     public class FamilyDoctor extends Doctor {
         boolean makesHouseCalls;
         void giveAdvice(){
             //提出诊断
         }
     }
     public class Surgeon extends Doctor {
         void treatPatient(){
             //进行手术
         }
         void makeIncision(){
         }
     }
 }
2
 
   范例二
 

 

class Animal {
    /**

     * 实例变量
     */
   
boolean picture;
   
String food;
    int
hunger;
    long
boundaries;
    int
location;
   
/**
     * 方法
     */
   
public void makeNoise(){
    }
   
public void eat(){
    }
   
public void sleep(){
    }
   
public void roam(){
    }
}

/**
 * 猫科类动物
 */

class Feline extends Animal{
   
public void roam(){
    }
}

/**
 * 犬科类动物
 */

class Canine extends Animal{
   
public void roam(){

    }
}

class Lion extends Feline{
   
public void makeNoise(){
    }
   
public void eat(){
    }
}

class Hippo extends Animal{
   
public void makeNoise(){
    }
   
public void eat(){
    }
}

class Tiger extends Feline{
   
public void makeNoise(){
    }
    
public void eat(){
    }
}

class Dog extends Canine{
   
public void makeNoise(){
    }
   
public void eat(){
    }
}

class Cat extends Feline{
   
public void makeNoise(){
    }
   
public void eat(){
    }
}

class Wolf extends Canine{
   
public void makeNoise(){
    }
   
public void eat(){
    }
}

class AnimalTest{
   
public static void main(String[] args){
        Wolf w =
new Wolf();
       
w.makeNoise();
       
w.roam();
       
w.eat();
       
w.sleep();
   
}
}

3
 
    范例三
 

 

public class MonsterTestDriver {
     public static void main(String[] args){
         Monster[] ma = new Monster[3];
         ma[0] = new Vampire();
         ma[1] = new Dragon();
         ma[2] = new Monster();
         for (int x = 0;x < 3;x++){
             ma[x].frighten(x);
         }
     }
 }
 class Monster{
     boolean frighten(int d){
         System.out.println("arrrgh");
         return true;
     }
 
 }
 class Vampire extends Monster{
     boolean frighten(int x){
         System.out.println("a bite?");
         return false;
     }
 
 }
 class Dragon extends Monster{
     boolean frighten(int degree){
         System.out.println("breath fire");
         return true;
     }
 }

 

注意
 

 

1、IS-A测试:

例如:三角形是一个多边型

          外科医生是一个医生

          如果类Y是继承类X . 旦类Y是类Z的父类,那么Z应该能通过IS-AX的测试

2、Public类型的成员会被继承。

3、Private类型的成员不会被继承。

要点
  • 子类会继承父类所有public类型的实例变量和方法,但不会继承父类所有private类型的变量和方法。

  • 继承下来的方法可以被覆盖掉,但实例变量不能被覆盖掉。