1、基本概念:

  0.0、抽象类的定义:抽象类是为子类提供一个规范,其目地是由子类去继承实现(类似国家提出的法律,由我们去执行)。

  0.1、定义抽象类用abstract来定义。

             语法: public abstract class 类名{  //code  };

  0.2、抽象类不能使用new方法进行实例化的类。

  0.3、什么时候用到抽象类:

     在父类中只需要规定各子类共有的哪些属性,而不需要给出属性的具体信息;但是,父类的这些属性对每个子类可能是不同的,

     需要在各子类中进行具体的定制。

     0.4、抽象类中可以有普通方法,但普通类不能有抽象方法。

    public abstract class 类名{

                  public abstract void abstract_say();

                  public void common_say(){  //code  };

            };

      0.5、如果一个类继承的抽象类,就必须重写该抽象类中的所有的抽象方法(普通重不重写都没关系),否则报错.

   

  

   但是如果不想重写抽象类的所有抽象方法,只需将子类修改成抽象类即:public abstract class extend_Abstra_Test extends Test(){  } 

   

 

 

  

2、小案例:

   猫科动物: 是一类几乎专门以肉食为主的哺乳动物(例举:猫、老虎、猎豹)。
   写出猫科两个行为:走、吃
   

    分析:
      走:猫科走路的行为一致(定义一个普通方法)。
      吃:
      老虎:只要是动物都吃。
                                                   老虎和猫吃的行为不一样
       猫:只吃鱼和老鼠(判断吃的是鱼和老鼠还是其他)。

代码:

  Felidea抽象类:         

      public abstract class Felidea {

              /**
                 * 走:猫科走路的行为一致(定义一个普通方法)。
              **/
             public void go_Walk(){
                    System.out.println("go walk~~~~~");
              };

              /**
                 * 吃:
               老虎:只要是动物都吃。
                                                ~~~老虎和猫吃的行为不一样
                猫:只吃鱼和老鼠(判断吃的是鱼和老鼠还是其他)。
             **/

                //吃定义为抽象方法
               public abstract void Eat(Animal animal);
      }

 

Animal类:

     public class Animal {
         /**
            * Animal主要是共同属性,方便其他动物继承
         **/
     };

 

Fishs鱼类(继承动物类的属性):

     public class Fishs extends Animal{      };

 

Mouse老鼠类(继承动物类的属性):

  public class mouse extends Animal(){      };

 

Tiger老虎类:

     public class Tiger extends Felidea{

          @Override //  重写
          public void Eat(Animal animal) {
                System.out.println("老虎什么都吃");

          }

     }

 

Cat猫类:

    public class Cat extends Felidea{

         @Override
         public void Eat(Animal animal) {
              if(animal instanceof Mouse || animal instanceof Fishs){
                       System.out.println("猫正在捕食老鼠和鱼");
               }else{
                      System.out.println("猫不捕食其他动物");
               }
          }

    }

 

posted on 2016-07-07 08:29  AMWHRW  阅读(629)  评论(0编辑  收藏  举报