Java抽象类
2020-06-03 16:04:36来源:博客园 阅读 ()
抽象类介绍
父类中的方法被其子类覆盖,并且它们的实现也不同。然后是父类的方法声明和方法主体,只有声明仍然有意义,但方法主体没有意义(因为子类对象将调用被其自身覆盖的方法)。换句话说,父类可能知道子类应该具有哪个函数,但是尚不清楚该函数如何实现父类(由子类本身确定)。父类仅需要提供方法签名,而无需方法主体。具体实现留给子类来实现。我们将没有方法主体的方法称为抽象方法。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),并且无法在模板中确定的事物被定义为抽象方法,并让使用该模板的类(继承该类的类)抽象类)重写抽象方法以满足要求。这是一个典型的模板想法。
原文链接:https://www.cnblogs.com/hite/p/13037699.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:如何快速安全的插入千万条数据?
下一篇:JDK8的JVM内存模型小结
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash