/**
* <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. 如何新建WebAPI,生成注释,TestAPI的项目

    一.新建WebAPI的项目 1. 在Web下,ASP.NET Web 应用程序,点击确定 2. 点击确定 3. 如图所示, 新建Controller 4 . 运行项目 二.注释 1. 在生成中,勾选x ...

  2. 数据结构(一)二叉树 & avl树 & 红黑树 & B-树 & B+树 & B*树 & R树

    参考文档: avl树:http://lib.csdn.net/article/datastructure/9204 avl树:http://blog.csdn.net/javazejian/artic ...

  3. C++11原子操作与无锁编程(转)

    不讲语言特性,只从工程角度出发,个人觉得C++标准委员会在C++11中对多线程库的引入是有史以来做得最人道的一件事:今天我将就C++11多线程中的atomic原子操作展开讨论:比较互斥锁,自旋锁(sp ...

  4. mysql关键字冲突

    在冲突的字段加上转移符,这样子就可以了: insert into test_table (wind_code,name,`read`,creade_time) values (?,?,?,?) (注意 ...

  5. 使用 ArcGIS Desktop 切瓦片

    目录 1.生成切片缓存切片方案 2.切瓦片 1.生成切片缓存切片方案 ArcGIS有默认的切片方案,如果需要自定义切片规则,需要先生成一个切片方案. 打开ArcMap,打开 工具箱(Tools Box ...

  6. C语言 按位异或实现加法

    /* C语言 按位异或实现加法 */ #include <stdio.h> #include <stdlib.h> #include <string.h> void ...

  7. Qt开发经验小技巧61-70

    很多人问Qt嵌入式平台用哪个好,这里统一回答(当前时间节点2018年):imx6+335x比较稳定,性能高就用RK3288 RK3399,便宜的话就用全志H3,玩一玩可以用树莓派香橙派. 对于大段的注 ...

  8. oracle 统计成绩

    set serveroutput on; declare cursor c1 is select dno,dname from dep; pdno dep.dno%TYPE; pdname dep.d ...

  9. jvm 性能调优工具之 jmap 命令详解

    jmap名称:Java Memory Map(内存映射) 官方文档:https://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jmap.html ...

  10. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器与EasyDSS流媒体解决方案的不同

    背景分析 众所周知,立足于视频软件的开发,我们的产品很多.经常有客户问到我们产品的差别以及某个产品在某个系统架构中的具体定位,因此我想通过一系列的博客说明一下,不同产品之间的区别,以及在具体架构中自身 ...