zoukankan      html  css  js  c++  java
  • java中的抽象类和抽象方法

    知识点:java中的抽象类和抽象方法

                 关键字abstract意为抽象的,可以用来修饰类和方法,分别称作抽象类和抽象方法

                  抽象类一般在多态的场景中使用

    一:抽象类(abstract class)

    在类的继承中,如果一个个新的子类被定义,子类变得越来越具体,父类变得更加一般和通用,类的设计应该保证父子类能够共享特征,有时将父类设计得非常抽象,使得父类没有具体的实例,这样的类叫做抽象类;一般当我们设计一个类,不需要创建此类的实例时,可以考虑将该类设置成抽象类,让其子类实现这个类的抽象方法

    抽象类的特征:

     ( 1 ) 不可被实例化

    (2)抽象类是有构造器的(所有类都有构造器)

    (3)抽象方法所在的类,一定是抽象类(因为抽象方法是没有方法体的,如果所在的类不是抽象类,那么该类可以实例化对象,调用抽象方法,然后无方法体去具体实现功能,则矛盾)

    (4)抽象类可以没有抽象方法的

     //抽象类
    abstract class Person {
    String name;
    public Person(){}//抽象类的构造方法
         public abstract void dink();//抽象方法,无{}方法体
    public void eat(){ //非抽象方法
    };

    }
    class Student extends Person{
    @Override
    public void eat() {
    System.out.println("吃饭");
    }

    @Override
    public void dink() {
    System.out.println("喝水");
    }
    }

    二:抽象方法(abstract method)

    abstract修饰的方法为抽象方法

    抽象方法的特征:

    (1)格式,没有方法体,包括{ },例如  public abstract void dink();

     (2)抽象方法只保留方法的功能,具体的执行,交给继承抽象类的子类,由子类重写改抽象方法

     (3)如果子类继承抽象类,并重写了父类的所有的抽象方法,则此子类不是抽象类,可以实例化的

     (4)如果子类继承抽象类,没有重写父类中所有的抽象方法,意味着子类中还有抽象方法,那么此子类必须必须声明为抽象的。

     

    上面的例子中,Student子类继承抽象父类,自重写了eat()抽象方法,没有重写drink()抽象方法,会报错,解决方法是把drink()方法也重写了,或者把Student也变成抽象类

     三:抽象类的使用场景

    抽象类一般在运用多态时,比较适用

  • 相关阅读:
    构造代码块重要理解
    Java中静态代码块、构造代码块、构造函数、普通代码块
    MySQL-分组查询(GROUP BY)及二次筛选(HAVING)
    mysql select将多个字段横向合拼到一个字段
    java语言支持的变量类型
    static修饰属性,方法,类
    恶意代码分析----网络环境配置
    Windows反调试技术(下)
    Windows反调试技术(上)
    脱壳入门----常见的寻找OEP的方法
  • 原文地址:https://www.cnblogs.com/shuaifing/p/10758522.html
Copyright © 2011-2022 走看看