Java 抽象类的简单使用
自己做的一点笔记...
抽象类:使用关键词 abstract 进行修饰,抽象类不能生成对象(实例化),且含有抽象方法(使用 abstract 进行声明,并且没有方法体)。
特点:
1️⃣ 抽象类不一定有抽象方法,但是有 abstract 修饰的方法,则其必须是抽象类;
2️⃣ 子类如果继承了抽象类,则必须重写抽象类中的方法;
3️⃣ 抽象类不能定义为 private 因为,它需要通过继承,才能有意义(子类不能修改 private 修饰的类的成员);
4️⃣ 如果子类继承了抽象类,但是没有实现父类的抽象方法,则子类也必须定义为抽象类。
作用:抽象类,给事物进行抽象,如果一些某些事物拥有同样的行为,就可以通过抽象类来统一进行规范,例如通过定义泛型的抽象类:
package leetcode.abstructs; import java.util.List; /**
* @todo 抽象类的应用测试
* @since 9:44 2019/1/29
* @author hanyf
*/
public abstract class MyAbstract<T> {
private List<T> list; public MyAbstract() {
} public MyAbstract(List<T> list) {
this.list = list;
} public void method(){
for (T t : list){
doLoop(t);
}
} /**
* @todo 抽象方法,在实例化调用该类的此抽象方法,并且可以对它进行重写
* @since 9:51 2019/1/29
* @author hanyf
* @params
* @return
*/
public abstract void doLoop(T t);
}
抽象类
package leetcode.test; import leetcode.abstructs.MyAbstract; import java.util.ArrayList;
import java.util.List; public class 抽象方法{
public static void main(String[] args) {
List<String> list = new ArrayList<>();
int i = 20;
while (i>0){
list.add("I'm String for "+ i);
i--;
} //抽象类的实现
//重写了抽象类方法实现
new MyAbstract<String>(list){
@Override
public void doLoop(String s) {
System.out.println(s);
}
}.method();
}
}
main方法
Java 抽象类的简单使用的更多相关文章
- Java接口、Java抽象类、C++抽象类的区别
由于这三种数据类型都是为了创建类层次结构的顶层构架,且用法有些许相似之处,这里简单区分一下: 接口: 接口用interface关键字定义, 名字一般使用-able形式的形容词. 接口通常定义抽象方法和 ...
- java抽象类与接口的区别及用法
java抽象类与接口的区别及用法 一.抽象类里面的方法可以有实现,但是接口里面的方法确是只能声明. 二.接口是设计的结果 :抽象类是重构的结果 . 三.java不支持多重继承,所以继承抽象类只能继承一 ...
- 【转】C#类的分类(静态类、实例类、嵌套类、结构、简单的抽象类、简单的密封类)
静态类 -------------------------------------------------------------------------------- 静态类就是在class关键字前 ...
- 第十八节:详解Java抽象类和接口的区别
前言 对于面向对象编程来说,抽象是它的特征之一. 在Java中,实现抽象的机制分两种,一为抽象类,二为接口. 抽象类为abstract class,接口为Interface. 今天来学习一下Java中 ...
- Java抽象类和接口的比较
一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法和一些具体 ...
- Java.util包简单总结
Java.util包简单总结 1. util包的框架 常用的集合类主要实现两个“super接口”而来:Collection和Map. 1.1 Collection有两个子接口:List和Set è¿é ...
- IEnumerator<TItem>和IEnumerator Java 抽象类和普通类、接口的区别——看完你就顿悟了
IEnumerable 其原型至少可以说有15年历史,或者更长,它是通过 IEnumerator 来定义的,而后者中使用装箱的 object 方式来定义,也就是弱类型的.弱类型不但会有性能问题,最主要 ...
- Java抽象类和接口的区别(好长时间没看这种文章了)
Java抽象类和接口的区别(好长时间没看这种文章了) abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的 ...
- 【Medium翻译】Java抽象类有什么用?
今天安利一个网站,其实很多朋友应该早就知道了,我之前ARTS打卡,英文文档的 很多出处就来自于这个网站,叫 「Medium」. 这个网站需要一定的技术去访问,但是为什么说他好呢,因为他号称全球最大的高 ...
随机推荐
- kcp源码segment头文件各字段含义
conv conv为一个表示会话编号的整数,和tcp的 conv一样,通信双// 方需保证 conv相同,相互的数据包才能够被认可 cmd cmd用来区分分片的作用.IKCP_ ...
- 移动端H5页面如何屏蔽双击缩放的功能?(转)
来自大佬的回答: 我在我们的页面中加了很多,除了ios10以上的safari不兼容以外还没有遇到过不兼容的情况. <!-- 视图窗口,移动端特属的标签. --> <meta name ...
- 从命令行运行 MyBatis Generator
? ? 一.准备 1. 获取最新jar包 2. 获取xml dtd <?xml version="1.0" encoding="UTF-8"?> & ...
- android app启动就闪退怎么办?
开发过程中,如遇到android app启动就闪退,不要急,直接进入调试模式运行app,就会取得出错的原因. http://blog.sina.com.cn/s/blog_44fa172f0102wg ...
- 前端jq设置下拉框的,单选框,复选框的帖子
$(function(){ var sex=$("#sex").val(); var marriageStatus=$("#marriageStatus").v ...
- [LeetCode 题解]: Generate Parentheses
Given n pairs of parentheses, write a function to generate all combinations of well-formed parenthes ...
- Web开发工具箱
1.打印1 Web打印组件jatoolsPrinter 2.打印2Lodop 3.web前端利器 Web Essentials
- ArrayList用法详解与源码分析
说明 此文章分两部分,1.ArrayList用法.2.源码分析.先用法后分析是为了以后忘了查阅起来方便-- ArrayList 基本用法 1.创建ArrayList对象 //创建默认容量的数组列表(默 ...
- MySQL数据库(二)
1.模糊查询like 在where 后面使用like 通配符: % 任意字符 _ 单个字符 2.order by 排序 order by price //默认升序排序 order by price d ...
- 转载:spring boot学习
Spring Boot学习 Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置. 简单来说,它提 ...