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也变成抽象类

     三:抽象类的使用场景

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

  • 相关阅读:
    3.2.5 复制节点:
    1.创建元素节点:
    有多少漏洞都会重来:从ElasticSearch到MongoDB和Redis
    登陆密码显示与不显示的切换
    计算机网络基础 — Linux 路由器
    作为白手起家的企业家,必经阶段你经历了几个?
    竞争越来越大,创业公司怎么才能走的越来越远?
    城市竞争太大?这有农村创业七大项目,让你远离竞争
    短视频的改革带来的风暴,网红又该何去何从?
    照着官方文档学习react
  • 原文地址:https://www.cnblogs.com/shuaifing/p/10758522.html
Copyright © 2011-2022 走看看