1. 14-10】面向对象-抽象类的产生
  2. /*
  3. 描述狗,行为,吼叫。
  4. 描述狼,行为,吼叫。
  5. 发现他们之间有共性,可以进行向上抽取。
  6. 当然是抽取他们的所属共性类型,犬科。
  7. 犬科这类事物,都具备吼叫行为,但是具体怎么叫,是不确定的,是由具体子类来明确的。
  8. 这时在描述犬科时,发现了有些功能不具体,这些不具体的功能,需要在类中标识出来,通过Java关键字abstract(抽象).
  9.  
  10. 定义了抽象函数的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类
  11. */
  12.  
  13. /*
  14. 抽象类的特点。
  15. 1,抽象类和抽象方法都需要被abstract修饰。
  16. 抽象方法一定要定义在抽象类中。
  17. 2,抽象类不可以创建实例,原因,调用抽象方法没有意义。
  18. 3,只有覆盖了抽象类中所有的抽象方法后,其子类才可以实例化。
  19. 否则该子类还是一个抽象类。
  20.  
  21. 之所以继承,更多是在于思想,是面对共性类型操作会更简单。
  22. */
  23.  
  24. /*
  25. 细节问题:
  26. 1,抽象类是父类吗?
  27. 是的,因为是不断抽取而来的。
  28.  
  29. 2,抽象类是否有构造函数呢?
  30. 有,虽然不能给自己的对象初始化,但是可以给自己的子类对象初始化。
  31. 抽象类和一般类的异同点:
  32. 相同:
  33. 1,它们都是用来描述事物,
  34. 2,它们之中都可以定义属性和行为。
  35.  
  36. 不同:
  37. 1,一般类可以具体的描述事物。
  38. 抽象类描述事物的信息不具体。
  39. 2,抽象类中可以多定义一个成员,抽象函数。
  40. 3,一般类可以创建对象,抽象类不能创建对象。
  41.  
  42. 3,抽象类中是否可以不定义抽象方法。
  43. 是可以的,那这个抽象类存在到底有什么意义呢?仅仅是不让该类创建对象。
  44.  
  45. 4,抽象关键字abstract不可以和哪些关键字共存?
  46. 1,final (被final修饰的类不能有子类,而抽象类的定义就是为了子类继承它)
  47. 2,private(子类要继承抽象类的全部方法才可以创建对象,一旦被private了 子类就不知道了)
  48. 3,static (有了静态修饰的方法后,就可以被类名直接调用,而调用抽象类的抽象方法是没有用的)
  49. */
  50.  
  51. abstract class Q
  52. {
  53. public abstract void houjiao();
  54. }
  55.  
  56. class Dog extends Q
  57. {
  58. public void houjiao()
  59. {
  60. System.out.println("汪汪汪汪");
  61. }
  62. }
  63.  
  64. class Wolf extends Q
  65. {
  66. public void houjiao()
  67. {
  68. System.out.println("嗷嗷嗷嗷");
  69. }
  70. }
  71.  
  72. class Test
  73. {
  74. public static void main(String[] args)
  75. {
  76. Wolf wolf = new Wolf();
  77. wolf.houjiao();
  78. }
  79. }
  80.  
  81. 14-11】面向对象-抽象类的练习
  82.  
  83. *
  84. 需求:公司中程序员有姓名,工号,薪水,工作内容。
  85. 项目经理除了有姓名,工号,薪水,工作内容,还有奖金。
  86. 对给出需求进行数据建模。
  87.  
  88. 在问题领域中先找寻其中的对象。
  89. 程序员:
  90. 属性:姓名,工号,薪水
  91. 行为:工作
  92.  
  93. 项目经理:
  94. 属性:姓名,工号,薪水,奖金
  95. 行为:工作
  96.  
  97. 经过分析发现:程序员和经理都属于员工
  98. 员工:
  99. 属性:姓名,工号,薪水
  100. 行为:工作
  101. 但是员工的工作本身具有不具体性,应该是抽象,由具体的子类来体现
  102.  
  103. */
  104.  
  105. abstract class Employee
  106. {
  107. private String name;
  108. private String id;
  109. private double pay;
  110.  
  111. public Employee(String name,String id,double pay)
  112. {
  113. this.name = name;
  114. this.id = id;
  115. this.pay = pay;
  116. }
  117.  
  118. public abstract void work();
  119.  
  120. }
  121.  
  122. //程序员
  123. class Programmer extends Employee
  124. {
  125. public Programmer(String name,String id,double pay)
  126. {
  127. super(name,id,pay);
  128. }
  129.  
  130. public void work()
  131. {
  132. System.out.println("code...");
  133. }
  134. }
  135.  
  136. //项目经理
  137. class Manager extends Employee
  138. {
  139. private double bouns;
  140. public Manager(String name,String id,double pay,double bouns)
  141. {
  142. super(name,id,pay);
  143. this.bouns = bouns;
  144. }
  145.  
  146. public void work()
  147. {
  148. System.out.println("manage");
  149. }
  150. }
  151.  
  152. class AbstractTest
  153. {
  154. public static void main(String[] agrs)
  155. {
  156. System.out.println("");
  157. }
  158. }

《JAVA学习笔记(14-10---14-11抽象类)》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. appium支持中文输入

    Appium 1.3.3以上.java:capabilities增加下面两项:capabilities.setCapability("unicodeKeyboard", " ...

  2. html年月日下拉联动菜单 年月日三下拉框联动

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. noip赛前小结4

    真正的勇士,敢于面对惨淡的人生. 真正的OIer,敢于做ccop的题. 有种凄凉叫做这道数学题已经超出了我语文的理解范围. 有种愤怒叫做ccop类的信息题已经超出了我语文的理解范围和数学的理解范围. ...

  4. 《JavaScript权威指南》读书笔记(四)

    日期:2015-12-06 事件传播:1.捕捉阶段2.运行阶段3.起泡阶段cookie和客户端持久性::HTML5引入了web应用缓存.LocalStorage.SessionStorage:使用XM ...

  5. 500 TypeError: Cannot read property 'connect.sid' of undefined

    1:在写passport验证测试用例时,发现有几个引用中间件顺序的错误,检查发现,passport验证写的是session,在传错误信息的时候req.flash调用也需要用到session中间件,否则 ...

  6. 自定义Encoder/Decoder进行对象传递

    转载:http://blog.csdn.net/top_code/article/details/50901623 在上一篇文章中,我们使用Netty4本身自带的ObjectDecoder,Objec ...

  7. [转]Java程序员们最常犯的10个错误

    1.将数组转化为列表 将数组转化为一个列表时,程序员们经常这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个 ...

  8. visual2012 快捷键

    代码格式化:Ctrl+K+D 注释:VS2010是(Ctrl+E,C),VS2012是(Ctrl+K, Ctrl+C) 反注释:VS2010是(Ctrl+E,U),VS2012是(Ctrl+K, Ct ...

  9. netbios wins dns LLMNR

    NetBIOS名称 Network Basic Input/Output System  (RFC-1001,1002)网络基本输入/输出系统协议 NetBIOS是一种高级网络接口,最初是在硬件中实 ...

  10. java面向对象编程— —第七章 继承

    7.1继承的起源 继承(Inheritance),即在面向对象编程中,可以通过扩展(extends)一个已有的类,并继承该类的属性的行为,来创建一个新的类. 已有的类称为父类(也可以称为基类,超类), ...