抽象类介绍
  父类中的方法被其子类覆盖,并且它们的实现也不同。然后是父类的方法声明和方法主体,只有声明仍然有意义,但方法主体没有意义(因为子类对象将调用被其自身覆盖的方法)。换句话说,父类可能知道子类应该具有哪个函数,但是尚不清楚该函数如何实现父类(由子类本身确定)。父类仅需要提供方法签名,而无需方法主体。具体实现留给子类来实现。我们将没有方法主体的方法称为抽象方法。Java语法规定包含抽象方法的类是抽象类。
  抽象方法:没有方法主体的方法。
  抽象类:包含抽象方法的类。
  抽象格式
  抽象表示抽象,用于修改方法的方法和类,修改的方法是抽象的方法,修改的类是抽象的类。
  抽象方法
  使用abstract关键字修改方法,该方法将成为抽象方法。抽象方法仅包含方法名称,而没有方法主体。
  定义格式:
  修饰符抽象返回值类型的方法名称(参数列表);
  代码示例:
  公共抽象无效run();
  抽象类
  如果一个类包含抽象方法,则该类必须是抽象的。注意:抽象类不一定具有抽象方法,但是具有抽象方法的类必须定义为抽象类。
  定义格式:
  抽象类类名{}
  代码示例:
  公共抽象类动物{公共抽象无效run();}
  抽象类的使用
  要求:继承抽象类的子类必须覆盖父类的所有抽象方法。否则,子类也必须声明为抽象类。
  代码示例:
  //父类,抽象类抽象类Employee{privateStringid;私有字符串名称;私人双薪;publicEmployee(){}publicEmployee(Stringid,字符串名称,双薪){this.id=id;这个。名称=名称this.salary=薪水;}//抽象方法//必须将抽象方法放在抽象类中abstractpublicvoidwork();}//定义一个子类以继承抽象类类Manager扩展Employee{publicManager(){}公共管理器(字符串id,字符串名称,双倍薪水){super(id,名称,薪水);}//2.重写父类的抽象方法@Overridepublicvoidwork(){System.out.println(“管理其他人”);}}///定义一个继承了Cook类扩展的抽象类的子类Employee{publicCook(){}publicCook(字符串id,字符串名称,双倍薪水){super(id,名称,薪水);}@Overridepublicvoidwork(){System.out.println(“Chef烹调更多的盐...”);}}//测试类publicclassDemo10{publicstaticvoidmain(String[]args){//创建一个摘要类,抽象类无法创建对象////假设抽象类允许我们创建对象,则内部的抽象方法没有方法主体,因此无法执行。因此,让我们不要创建对象//Employeee=newEmployee();//e.work();//3.创建子类Managerm=newManager();m.work();Cookc=newCook(“ap002”,“Cook”,1);c.work();}}
  此时重写的方法是父类的子类的抽象方法的完成。我们还将这种方法称为重写操作,也称为实现方法。
  抽象类的特征
  总结抽象类的特点可以说是有得有失
  是:抽象类具有使用抽象方法的能力。
  丢失:抽象类失去了创建对象的能力。
  还可以使用其他成员(构造函数,实例方法,静态方法等)抽象类。
  抽象类的注意事项
  关于抽象类的使用,以下是语法细节。尽管条目很多,但如果您了解抽象的性质,则无需记住它们。
  抽象类无法创建对象。如果创建它们,编译将失败并且将报告错误。只能创建不是抽象子类的对象。
  理解:假设创建了一个抽象类的对象并调用了一个抽象方法,并且该抽象方法没有特定的方法主体并且没有意义。
  在抽象类中,可以有一个构造函数,子类使用该构造函数在创建对象时初始化父类成员。
  理解:子类的构造函数中有一个默认的super(),您需要访问超类的构造函数。
  抽象类不一定包含抽象方法,但是具有抽象方法的类必须是抽象类。
  理解:一个不包含抽象方法的抽象类,目的是不允许调用者创建这种类型的对象,通常用于某些特殊的类结构设计。
  抽象类的子类必须重写抽象父类中的所有抽象方法,否则子类也必须定义为抽象类,并且编译失败并报告错误。
  理解:假设您不重写所有抽象方法,则该类可能包含抽象方法。创建对象后,调用抽象方法毫无意义。
  抽象类的含义要由子类继承,抽象类体现了模板的思想。
  了解:抽象类中已实现的是模板中确定的成员。抽象类不确定如何实现,并将其定义为抽象方法,该方法移交给特定的子类以进行实现。
  抽象类的含义
  抽象类的含义将由子类继承,否则抽象类将毫无意义。抽象类体现了模板的思想。模板是通用的东西。抽象类已经是特定的实现(抽象类可以具有成员变量和实现Method),并且无法在模板中确定的事物被定义为抽象方法,并让使用该模板的类(继承该类的类)抽象类)重写抽象方法以满足要求。这是一个典型的模板想法。

posted on 2020-06-03 15:14  林口  阅读(274)  评论(0编辑  收藏  举报