java面向对象抽象类和接口
抽象方法和抽象类
(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面向对象抽象类和接口相关推荐
- Java基础学习第十二讲:Java面向对象---抽象类和接口
Java面向对象-抽象类和接口 一.抽象类 抽象的定义: 我们在日常生活中,经常通过总结一些事物的共性来对事物进行分类,这种共性可能是一些相同的属性,也可能是一些相同的动作.通过总结,我们能够清晰的划 ...
- Java 面向对象 抽象类与接口
在类的继承中,如果一个个新的子类被定义,子类变得越来越具体,父类变得更加一般和通用,类的设计应该保证父子类能够共享特征,有时将父类设计得非常抽象,使得父类没有具体的实现,这样的类叫做抽象类:一般当我们 ...
- java面向对象-抽象类和接口
抽象类(abstract没有足够的信息来描述) 被abstract修饰的类就是抽象类,修饰的方法就是抽象方法. 抽象类中可以没有抽象方法,但有抽象方法的类必须要声明为抽象类. 抽象类不能使用new来创 ...
- Java面向对象—抽象类和接口
目录 抽象类 什么是抽象类? 1.抽象方法 2.抽象类 实现抽象类中的方法 抽象类使用的意义 接口 什么是接口? 接口的意义 抽象类 什么是抽象类? 1.抽象方法 当一个类没有具体的方法体时,且被ab ...
- Java中抽象类和接口在概念、语法和应用上的区别和关系
2019独角兽企业重金招聘Python工程师标准>>> 春招开始了,盆友们都忙着准备笔试.准备面试,复习学过的知识点,当然我也不例外,在这里祝每一个"有心人"心想 ...
- Java面向对象-抽象类
Java面向对象-抽象类 定义:在java中,含有抽象方法的类称为抽象类,同样不能生成对象: 注意点: 1,包含一个抽象方法的类是抽象类: 2,抽象类和抽象方法都要用abstract关键字修饰: 3, ...
- 关于Java中抽象类和接口的一点思索
Java中抽象类和接口的一点思索 成员方法上的区别: 1. java中的抽象类可以提供成员方法的实现细节,抽象方法只能是被public和protected来修饰 配合abstract关键字,子类需要实 ...
- java中抽象类和接口的作用与区别
抽象类与接口的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract ...
- 详细解析Java中抽象类和接口的区别
在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力.abstract class和int ...
最新文章
- boost::type_erasure模块实现类型安全的 printf的测试程序
- CentOS配置Tair
- IOS 自定义NIB视图
- 驱动提取软件_深入分析施耐德工控软件代码执行漏洞
- js 验证护照_护照本地策略第2部分| Node.js
- Python字符串常用函数使用详解(内附详细案例)
- html基础之背景属性
- C++Builder 2010深入TForm类之属性
- 移动手机病毒的进化历程
- JavaScript编程用法——JavaScript运行环境
- 查看电脑卸载mysql是否干净_如何把Mysql卸载干净(亲测有效)
- 内存单元地址求字节大小的计算方法
- CSS3的clac()函数无效,警告提示“invalid property value”
- Camunda/Flowable/Activiti技术发展史/盘古BPM框架对比最新版
- 康乐忆享|志愿者心得精选——张凌旭
- 百度测试开发岗面试题(2019秋招)
- 10. Joining Data with dplyr in R
- 在linux上安装微信/QQ/TIM/迅雷等
- 【基础篇】MySQL系列之where条件查询
- git 创建远程新分支