/**
* <html>
* <body>
* <P> Copyright JasonInternational Since 1994 https://github.com/Jasonandy/Spring-Core</p>
* <p> All rights reserved.</p>
* <p> Created on 2018年</p>
* <p> Created by Jason </p>
* </body>
* </html>
*/
package cn.ucaner.core.absinf; /**
* @Package:cn.ucaner.core.absinf
* @ClassName:AbsInfDemo
* @Description: <p> AbsInfDemo - 接口和抽象类的学习 {@link https://www.cnblogs.com/danbing/p/5035189.html}
*
* 最近学习Spring的源码 仿Spring实现
* 里面用到大量的抽象类和接口 概念比较模糊 故整理出来学习
*
* 一.抽象类
* 1、抽象类
* 1).包含一个抽象方法的类就是抽象类
* 2、抽象方法
* 1).声明而未被实现的方法,抽象方法必须使用abstract关键词字声明
* 3、抽象类被子类继承,子类(如果不是抽象类)必须重写抽象类中的所有抽象方法
* 4、抽象类不能被直接实例化,要通过其子类进行实例化
* 5、只要包含一个抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他方法
* 6、子类中的抽象方法不能与父类的抽象方法同名
* 7、abstract不能与final并列修饰同一个类
* 8、abstract 不能与private、static、final或native并列修饰同一个方法
*
*
*
*
* https://www.cnblogs.com/GreatKing/p/6077912.html
* 什么时候使用接口,什么时候使用抽象类?
* 1.如果你想拥有一些方法,并且这些方法有默认实现,那么久使用抽象类
* 2.如果你想实现多继承,那么就是用接口吧,java不支持多继承,但是可以实现多个接口
* 3.接口主要用于模块与模块之间的调用
* 4.抽象类主要用于当做基础类使用,即基类
*
* consider: {@code cn.ucaner.alpaca.framework.utils.tools}
*
* @see https://github.com/Jasonandy/alpaca 可以参考alpaca common里的tools里面的代码规范.
*
* </p>
* @Author: - Jason
* @CreatTime:2018年6月2日 上午11:02:18
* @Modify By:
* @ModifyTime: 2018年6月2日
* @Modify marker:
* @version V1.0
*/
public class AbsInf { }
/**
* <html>
* <body>
* <P> Copyright JasonInternational Since 1994 https://github.com/Jasonandy/Spring-Core</p>
* <p> All rights reserved.</p>
* <p> Created on 2018年</p>
* <p> Created by Jason </p>
* </body>
* </html>
*/
package cn.ucaner.core.absinf.abs; /**
* @Package:cn.ucaner.core.absinf
* @ClassName:Printer
* @Description: <p> Printer 打印的抽象类 - 接口是抽象类的形式.
* https://www.cnblogs.com/beanmoon/archive/2012/12/06/2805221.html
* </p>
* @Author: - Jason
* @CreatTime:2018年6月2日 上午11:10:08
* @Modify By:
* @ModifyTime: 2018年6月2日
* @Modify marker:
* @version V1.0
*/
public abstract class Printer { public void open() {
System.out.println("Printer Open.");
} public void close() {
System.out.println("Printer Closed.");
} /**
* @Description: 抽象方法 - print - 子类必须实现
* @Autor: Jason - jasonandy@hotmail.com
*/
abstract void print(); }
/**
* <html>
* <body>
* <P> Copyright JasonInternational Since 1994 https://github.com/Jasonandy/Spring-Core</p>
* <p> All rights reserved.</p>
* <p> Created on 2018年</p>
* <p> Created by Jason </p>
* </body>
* </html>
*/
package cn.ucaner.core.absinf.abs; /**
* @Package:cn.ucaner.core.absinf
* @ClassName:HPPrinter
* @Description: <p> HP extends Printer NOT implement </p>
* @Author: - Jason
* @CreatTime:2018年6月2日 上午11:15:03
* @Modify By:
* @ModifyTime: 2018年6月2日
* @Modify marker:
* @version V1.0
*/
public class HPPrinter extends Printer{ @Override
void print() {
System.out.println("Hello , I'm HP Printer.");
} public static void main(String[] args) { Printer p = new HPPrinter();
p.open();
p.print();
p.close();
}
}
//Outputs
//Printer Open.
//Hello , I'm HP Printer.
//Printer Closed.
/**
* <html>
* <body>
* <P> Copyright JasonInternational Since 1994 https://github.com/Jasonandy/Spring-Core</p>
* <p> All rights reserved.</p>
* <p> Created on 2018年</p>
* <p> Created by Jason </p>
* </body>
* </html>
*/
package cn.ucaner.core.absinf.abs; /**
* @Package:cn.ucaner.core.absinf
* @ClassName:EpsonPrinter
* @Description: <p> Epson </p>
* @Author: - Jason
* @CreatTime:2018年6月2日 上午11:17:29
* @Modify By:
* @ModifyTime: 2018年6月2日
* @Modify marker:
* @version V1.0
*/
public class EpsonPrinter extends Printer{ @Override
void print() {
System.out.println("Hi , I'm Epson Printer.");
} public static void main(String[] args) {
Printer p = new EpsonPrinter();
p.open();
p.print();
p.close();
}
} //Outputs
//Printer Open.
//Hi , I'm Epson Printer.
//Printer Closed.

Java abstract 理解和学习的更多相关文章

  1. map和flatmap的区别+理解、学习与使用 Java 中的 Optional

    转自:map和flatmap的区别 对于stream,   两者的输入都是stream的每一个元素,map的输出对应一个元素,必然是一个元素(null也是要返回),flatmap是0或者多个元素(为n ...

  2. Effective Java通俗理解(持续更新)

    这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...

  3. Effective Java通俗理解(下)

    Effective Java通俗理解(上) 第31条:用实例域代替序数 枚举类型有一个ordinal方法,它范围该常量的序数从0开始,不建议使用这个方法,因为这不能很好地对枚举进行维护,正确应该是利用 ...

  4. 杨其菊201771010134《面向对象程序设计(java)》第四周学习总结

    <面向对象程序设计(java)> 第四周学习总结 第一部分:理论知识 1.类与对象 a.类(class)是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例: java中类声明的格式 ...

  5. Effective Java通俗理解(上)

    这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...

  6. 20145304 Java第六周学习报告

    20145304<Java程序设计>第六周学习总结 教材学习内容总结 1.InputStream与OutputStream: 在Java中,输入串流的代表对象为java.io.InputS ...

  7. Java反射机制的学习

    Java反射机制是Java语言被视为准动态语言的关键性质.Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调 ...

  8. Java程序设计第四周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...

  9. JAVA个人理解

    为了找到别人写的好文章,先分享下自己的知识,找找感觉路线. 学java前接触的c,后来转向java.第一个照面理解的就是面向对象,没想到让我想了好多年.当时有个负责任的老师说面向对象这个词具体释义众说 ...

随机推荐

  1. Spring通知,顾问,增强

    1.AOP  (Aspect  Oriented Programming  面向切面编程) 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编 ...

  2. SpringBoot上传文件到本服务器 目录与jar包同级问题

    目录 前言 原因 实现 不要忘记 最后的封装 Follow up   前言 看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了.当你使用tomcat发布项目的时候,上传 ...

  3. ubuntu笔记2-误删dpkg的/var/lib/dpkg/info文件夹

    由于误删了dpkg的/var/lib/dpkg/info文件夹,导致安装文件的时候报错 错误提示:E: Sub-process /usr/bin/dpkg returned an error code ...

  4. 如何理解 Web API

    什么是web API? web API 控制器.路由 测试  Web  API  什么是web API ? 简单说,API是接口,访问程序的某一个功能或者数据,实现移动端和客户端的程序之间的数据交互: ...

  5. 【Beta】Phylab 发布说明

    Phylab Beta阶段发布说明 一.发布地址 Phylab 二.新功能 1. Markdown(Html)报告生成 在生成报告界面可以选择报告生成方式:Latex或Markdown模板.目前支持M ...

  6. OpenStack创建网络和虚拟机、dhcp设备、虚拟路由器、虚拟机访问外网原理分析

    创建网络和虚拟机流程: 1.创建网络和子网 背后发生了什么: Neutron让控制节点上针对此子网的dhcp(虚拟设备)启动,用于给该子网下的实例分配ip 2.生成虚拟机 背后发生了什么: 用户通过G ...

  7. 对回溯算法的理解(以数独游戏为例,使用c++实现)

    算法思想: 数独游戏的规则: 每一行都用到1.2.3.4.5.6.7.8.9位置不限: 每一列都用到1.2.3.4.5.6.7.8.9位置不限: 每3×3的格子(共九个这样的格子)都用到1.2.3.4 ...

  8. 公司-IT-Yahoo:百科

    ylbtech-公司-IT-Yahoo:百科 雅虎(英文名称:Yahoo!,NASDAQ:YHOO)是美国著名的互联网门户网站,也是20世纪末互联网奇迹的创造者之一.其服务包括搜索引擎.电邮.新闻等, ...

  9. Flutter入门(二)

    * 网格布局 class HomeContent extends StatelessWidget { List<Widget> _getListData() { var tempList ...

  10. PMP 第9~10章错题总结

    1.组织分解结构把组织中的部门与项目中的工作包联系起来2.管理项目团队时应该使用冲突管理3.职责分配矩阵(RAM)显示了分配给每个工作包的项目资源,用于说明工作包或活动与项目团队成员之间的关系.而RA ...