/**
* <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. Johnson算法:多源最短路算法

    Johnson算法 请不要轻易点击标题 一个可以在有负边的图上使用的多源最短路算法 时间复杂度\(O(n \cdot m \cdot log \ m+n \cdot m)\) 空间复杂度\(O(n+m ...

  2. LCA的几种做法

    P3379 LCA $ 1:$蜗牛爬式 void dfs(int u,int fa) { f[u]=fa;//预处理father for(int i=head[u]; i; i=e[i].nxt) i ...

  3. Zookeeper请求处理原理分析

    Zookeeper是可以存储数据的,所以我们可以把它理解一个数据库,实际上它的底层原理本身也和数据库是类似的. 一.数据库的原理 我们知道,数据库是用来存储数据的,只是数据可以存储在内存中或磁盘中.而 ...

  4. Http、Socket、WebSocket之间联系与区别

    WebSocket和Socket区别 可以把WebSocket想象成HTTP(应用层),HTTP和Socket什么关系,WebSocket和Socket就是什么关系. HTTP 协议有一个缺陷:通信只 ...

  5. noscript 标签介绍

    noscript 标签介绍 一.总结 一句话总结: noscript 标签在不支持JavaScript 的浏览器中显示替代的内容. 1.noscript标签使用实例? html标签直接放在noscri ...

  6. [Web Pdf] flying-saucer + iText + Freemarker生成pdf 跨页问题

    转载于: https://blog.csdn.net/qq_31980421/article/details/79662988 flying-saucer + iText +  Freemarker实 ...

  7. XML External Entity Injection(XXE)

    写在前面 安全测试fortify扫描接口项目代码,暴露出标题XXE的问题, 记录一下.官网链接: https://www.owasp.org/index.php/XML_External_Entity ...

  8. grpc使用记录(一) gRPC编译(mscv/gcc)

    目录 1.编译前的准备工作 2.Windows下使用VS2019编译 2.1.使用cmake生成VS2019解决方案 2.2.使用msbuild工具进行编译 3.linux下编译 3.1 CentO ...

  9. Proj.4 升级新版本5.x和6.x

    目录 Proj.4 升级新版本5.x和6.x 0.缘起 1.5.x和6.x更新情况简述 PROJ 5.x 更新 PROJ 6.x 更新 2.从PROJ.4向新版本迁移 迁移到5.x版本 迁移到6.x版 ...

  10. Xamarin.FormsShell基础教程(3)Shell项目构成

    Xamarin.FormsShell基础教程(3)Shell项目构成 在创建的ShellDemo解决方案中,有3个子项目,分别为ShellDemo.ShellDemo.Android和ShellDem ...