Java abstract 理解和学习
/**
* <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 理解和学习的更多相关文章
- map和flatmap的区别+理解、学习与使用 Java 中的 Optional
转自:map和flatmap的区别 对于stream, 两者的输入都是stream的每一个元素,map的输出对应一个元素,必然是一个元素(null也是要返回),flatmap是0或者多个元素(为n ...
- Effective Java通俗理解(持续更新)
这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...
- Effective Java通俗理解(下)
Effective Java通俗理解(上) 第31条:用实例域代替序数 枚举类型有一个ordinal方法,它范围该常量的序数从0开始,不建议使用这个方法,因为这不能很好地对枚举进行维护,正确应该是利用 ...
- 杨其菊201771010134《面向对象程序设计(java)》第四周学习总结
<面向对象程序设计(java)> 第四周学习总结 第一部分:理论知识 1.类与对象 a.类(class)是构造对象的模板或蓝图.由类构造对象的过程称为创建类的实例: java中类声明的格式 ...
- Effective Java通俗理解(上)
这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...
- 20145304 Java第六周学习报告
20145304<Java程序设计>第六周学习总结 教材学习内容总结 1.InputStream与OutputStream: 在Java中,输入串流的代表对象为java.io.InputS ...
- Java反射机制的学习
Java反射机制是Java语言被视为准动态语言的关键性质.Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调 ...
- Java程序设计第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答:①String类是final类,不能定义String的子类. ② instanceof ...
- JAVA个人理解
为了找到别人写的好文章,先分享下自己的知识,找找感觉路线. 学java前接触的c,后来转向java.第一个照面理解的就是面向对象,没想到让我想了好多年.当时有个负责任的老师说面向对象这个词具体释义众说 ...
随机推荐
- 用Eclipse的maven方式创建JFinal项目
- Cesium中导入三维模型方法(dae到glft/bgltf)[转]
Cesium中导入三维模型方法(dae到glft/bgltf) Cesium中目前支持gltf和bgltf两种格式.“gltf是khronos组织(起草OpenGL标准的那家)定义的一种交换格式,用于 ...
- Spring Boot Controller单元测试
一.创建Controller 一个方法是用传统IO来下载文件,一个是NIO下载文件 @Controller public class FileController { private Logger l ...
- Linux下安装java及配置(yum安装)
1.查看java的所有版本:yum list java* 2.安装免费版1.8: yum install java-1.8.0-openjdk.x86_64 3.配置java环境 JAVA_HOME= ...
- Spring-boot +Shiro 导致事务无效
今天在开发过程中,遇到一个情况,就是事务事务,同项目的别的service都在事务中,可以就是有一个事务失效. 排除了各种情况 1.检查数据库的引擎是否是innoDB 2.方法是否为public 3.这 ...
- java中为什么notify()可能会导致死锁,而notifyAll()则不会
简单的说,notify()只唤醒一个正在等待的线程,当该线程执行完以后施放该对象的锁,而没有再次执行notify()方法,则其它正在等待的线程 则一直处于等待状态,不会被唤醒而进入该对象的锁的竞争池, ...
- 【PHP】使用phpoffice/phpexcel导入导出数据
本例以thinkphp5.1为例 包地址: https://packagist.org/packages/phpoffice/phpexcel 使用: composer require phpoffi ...
- matlab学习笔记12_2创建结构体数组,访问标量结构体,访问非标量结构体数组的属性,访问嵌套结构体中的数据,访问非标量结构体数组中多个元素的字段
一起来学matlab-matlab学习笔记12 12_2 结构体 创建结构体数组,访问标量结构体,访问非标量结构体数组的属性,访问嵌套结构体中的数据,访问非标量结构体数组中多个元素的字段 觉得有用的话 ...
- [Py] 简单的 Python 运行环境
python:https://www.python.org/downloads/ pip:https://pip.pypa.io/en/stable/installing/#upgrading-pip ...
- Gerrit - Gerrit与GitLab集成
1 - 简介 虽然Gerrit 本身提供 Code Review和 Git 仓库的两大功能,但实际上很多项目用的是其他的Git仓库,例如GitLab和GitHub. 一般情况下,Gerrit位于最终代 ...