十二、java中的抽象类

来源:互联网 发布:网易对战平台mac版 编辑:程序博客网 时间:2024/05/16 18:15

Java抽象类 就是把具有相同特性的事物归为一个抽象类

概念

  1. 抽象类不能直接实例化对象。(即不能new一个新对象)
  2. 抽象类一般包括一个或几个抽象方法,抽象方法就是abstract修饰的方法。
  3. 抽象方法只有方法名,没有方法体。(就好比一个模板)
  4. 抽象类的子类必须重写父类的抽象方法(重写写入方法体)子类才能真正实例化,否则子类也是一个抽象类。
  5. 抽象类不一定有抽象方法,但有抽象方法的类一定是抽象类

笔者个人见解:

比如水果是总称,我们可以定义一个苹果类、定义一个西瓜类。

然后我们实例化一个苹果对象,实例化一个西瓜对象

我们可以定义一个水果类,但我们无法实例化一个水果对象???

因为水果是总称啊,无法判断我们说的是哪一种水果

这时,水果类就是一个抽象类(就像是一种“模板”)

水果类可以被苹果类继承扩展,也可以被西瓜类继承扩展

抽象类的定义形式:

一般格式如下:

   abstract  class  类名  {

   类体

   }


举例://Dog类继承于抽象类Animal。

abstract class Animal{      //抽象类 Animal 动物

    String name;                //属性名字

    Animal(String name){  //普通方法,传名字参数

        this.name=name;

    }

    void getname(){      //普通方法,获取并输出名字参数

        System.out.println("Animal's nameis"+ name);

    }

    Abstract void move()    //抽象方法abstract修饰。只声明move方法,但是无方法体!

}

class Dog extends Animal {        //狗类 继承 抽象 动物类

      int  age;                                 //属性 年龄

      Dog(String name,int age){    //狗狗 构造方法

      super(name);             //调用父系name方法

      this.age=age;            //把传入age参数赋值当前age

      }

      void getage(){                   //获取age方法,获取并输出age参数

           System.out.println("Dogis"+ age +"years old");

      }

      void move(){                        //重写父系move方法(写入方法体)(不重写无法实例)

           System.out.println(name +" can run");

      }

}

Public class AbstractDemo{

     public static void main(String args[]){

          Dog d=newDog("汪小白",5);

          d.getname();    //父系getname方法

          d.getage();       //自己的getage方法

          d.move();         //自己重写的move方法

     }        

}

程序运行结果:

Animal's name is 汪小白

Dog is 5 years old

汪小白 can run

 

 

0 0
原创粉丝点击