抽象方法和抽象类

(1)一个抽象类中可以不定义抽象方法,但是只要类中有一个抽象方法,则该类一定是抽象类

(2)抽象类不能被实例化,即不能被new创建一个实例对象。

(3)如果一个子类继承一个抽象类,则子类需要通过覆盖的方式来重写该抽象类中的所有抽象方法。如果子类没有完全重写抽象类和抽象方法,则子类仍是抽象的

(4)抽象方法可以与public,protected复合使用,但不能与final,private和static复合使用。

抽象类的作用:

抽象类不能被实例化,只能作为父类被继承。从语义的角度而言,抽象类是从多个具体类多个具体类中抽象出来的父类,从多个具有相同特征的类中抽象出一个抽象类,以该抽象类作为子类的模板,从而避免了子类设计是的随意性。抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展,改造,但子类总体上会保留抽象类的行为方式。

例如:

public abstract class {
private double ;
public abstract double get();
}
public double get(){
return 2*3.14*get();
}
public double get(){
return ;
}

SpeedMeter 类中提取了速度表的通用算法,但一些具体的实现细节则推迟到其子类CerSpeedMeter类中实现,这是一种典型的模板模式。

模板模式基本如下:

(1)抽象父类仅仅定义使用的某些方法,将不能实现的部分抽象方法,留给其子类实现。

(2)父类中包含需要调用的某些方法,这些被调用方法既可以由父类实现,也可以由其子类实现。父类中提供的方法仅定义了一个通用算法需要具体子类辅助实现。

通过本章学习使我知道了抽象类和接口的使用,以及子类继承父类的条件

java面向对象抽象类和接口相关推荐

  1. Java基础学习第十二讲:Java面向对象---抽象类和接口

    Java面向对象-抽象类和接口 一.抽象类 抽象的定义: 我们在日常生活中,经常通过总结一些事物的共性来对事物进行分类,这种共性可能是一些相同的属性,也可能是一些相同的动作.通过总结,我们能够清晰的划 ...

  2. Java 面向对象 抽象类与接口

    在类的继承中,如果一个个新的子类被定义,子类变得越来越具体,父类变得更加一般和通用,类的设计应该保证父子类能够共享特征,有时将父类设计得非常抽象,使得父类没有具体的实现,这样的类叫做抽象类:一般当我们 ...

  3. java面向对象-抽象类和接口

    抽象类(abstract没有足够的信息来描述) 被abstract修饰的类就是抽象类,修饰的方法就是抽象方法. 抽象类中可以没有抽象方法,但有抽象方法的类必须要声明为抽象类. 抽象类不能使用new来创 ...

  4. Java面向对象—抽象类和接口

    目录 抽象类 什么是抽象类? 1.抽象方法 2.抽象类 实现抽象类中的方法 抽象类使用的意义 接口 什么是接口? 接口的意义 抽象类 什么是抽象类? 1.抽象方法 当一个类没有具体的方法体时,且被ab ...

  5. Java中抽象类和接口在概念、语法和应用上的区别和关系

    2019独角兽企业重金招聘Python工程师标准>>> 春招开始了,盆友们都忙着准备笔试.准备面试,复习学过的知识点,当然我也不例外,在这里祝每一个"有心人"心想 ...

  6. Java面向对象-抽象类

    Java面向对象-抽象类 定义:在java中,含有抽象方法的类称为抽象类,同样不能生成对象: 注意点: 1,包含一个抽象方法的类是抽象类: 2,抽象类和抽象方法都要用abstract关键字修饰: 3, ...

  7. 关于Java中抽象类和接口的一点思索

    Java中抽象类和接口的一点思索 成员方法上的区别: 1. java中的抽象类可以提供成员方法的实现细节,抽象方法只能是被public和protected来修饰 配合abstract关键字,子类需要实 ...

  8. java中抽象类和接口的作用与区别

    抽象类与接口的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract ...

  9. 详细解析Java中抽象类和接口的区别

    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...

最新文章

  1. boost::type_erasure模块实现类型安全的 printf的测试程序
  2. CentOS配置Tair
  3. IOS 自定义NIB视图
  4. 驱动提取软件_深入分析施耐德工控软件代码执行漏洞
  5. js 验证护照_护照本地策略第2部分| Node.js
  6. Python字符串常用函数使用详解(内附详细案例)
  7. html基础之背景属性
  8. C++Builder 2010深入TForm类之属性
  9. 移动手机病毒的进化历程
  10. JavaScript编程用法——JavaScript运行环境
  11. 查看电脑卸载mysql是否干净_如何把Mysql卸载干净(亲测有效)
  12. 内存单元地址求字节大小的计算方法
  13. CSS3的clac()函数无效,警告提示“invalid property value”
  14. Camunda/Flowable/Activiti技术发展史/盘古BPM框架对比最新版
  15. 康乐忆享|志愿者心得精选——张凌旭
  16. 百度测试开发岗面试题(2019秋招)
  17. 10. Joining Data with dplyr in R
  18. 在linux上安装微信/QQ/TIM/迅雷等
  19. 【基础篇】MySQL系列之where条件查询
  20. git 创建远程新分支

热门文章

  1. CVPR 2021 论文大盘点-去阴影、去反光、去高光、去伪影篇
  2. 2022最新软件测试面试题
  3. Element ui 中的tree 在数据前面添加自定义图标
  4. python 下如何播放mp3
  5. Python有参函数和无参函数实例
  6. 魅族魅蓝真机调试不能识别设备
  7. 计算机网络 | 网络层 | 什么是网络层 | 详解
  8. 2022年康复医学治疗技术(师)考试题库
  9. 阿里实习生转正面试记
  10. LINUX关闭防火墙、开放特定端口等常用操作