【Java入门提高篇】Day1 抽象类】的更多相关文章

基础部分内容差不多讲解完了,今天开始进入Java提高篇部分,这部分内容会比之前的内容复杂很多,希望大家做好心理准备,看不懂的部分可以多看两遍,仍不理解的部分那一定是我讲的不够生动,记得留言提醒我. 好了,没时间了,快上车! 本篇内容主要讲解Java中的抽象类.那什么是抽象类呢?顾名思义嘛,就是很"抽象"的类,抽象是具体的代名词,就像老板跟你说,大家加油干,努力干活就跟你涨工资,但很多时候都只是光说不做,这就很抽象了(2333),如果要一本正经的说的话,就是带有抽象方法的类,那什么是抽象…
抽象类跟接口都讲完了,现在来做一个比较. 其实说实话,没有多大的可比较性,它们是完全不同的两个东西,它们的抽象不在同一个层级上.但是为了让大家更好的理解,还是做一个比较吧,毕竟它们都很抽象(233). 首先是语法层面上的对比 1)抽象类跟接口都不能被实例化,因为它们都很虚嘛.但是在访问权限上,两者有一定的区别. a.抽象类中的抽象方法(其前有abstract修饰)不能用private.static.synchronized.native访问修饰符修饰.理由很简单,容我慢慢道来. 抽象方法是没有方…
上一篇讲完了抽象类,这一篇主要讲解比抽象类更加抽象的内容--接口. 什么是接口呢?先来看个栗子: /** * @author Frank * @create 2017/11/22 * @description 可比较接口,用于实现类对象排序 */ public interface Isortable { //a>b则返回正整数,相等则返回0,否则返回负整数 int sort(Object a,Object b); } 这是一个简单的接口,使用interface关键字来定义接口. 接口是描述可属于…
今天介绍第二种内部类--局部内部类. 局部内部类是什么?顾名思义,那就是定义在局部内部的类(逃).开玩笑的,局部内部类就是定义在代码块.方法体内.作用域(使用花括号"{}"括起来的一段代码)内的类.局部内部类有以下特性: 局部内部类只能在代码代码块.方法体内和作用域中使用. 局部内部类同样可以无限制调用外部类的方法和属性. 可以使用abstract修饰,声明为抽象类. 举个栗子: public class Outer2 { public void print(){ class Inne…
泛型是一个很有意思也很重要的概念,本篇将简单介绍Java中的泛型特性,主要从以下角度讲解: 1.什么是泛型. 2.如何使用泛型. 3.泛型的好处. 1.什么是泛型? 泛型,字面意思便是参数化类型,平时所面对的类型一般都是具体的类型,如果String,Integer,Double,而泛型则是把所操作的数据类型当作一个参数.如,ArrayList<String>(),通过传入不同的类型来指定容器中存储的类型,而不用为不同的类型创建不同的类,这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类…
今天要介绍的是基础容器类(为了与并发容器类区分开来而命名的名字)中的另一个成员——PriorityQueue,它的大名叫做优先级队列,想必即使没有用过也该有所耳闻吧,什么?没..没听过?emmm...那就更该认真看看了. 通过本篇你将了解到: 1.PriorityQueue是什么? 2.PriorityQueue的内部结构是什么? 3.二叉堆.大顶堆.小顶堆分别是什么?有什么特性? 4.小顶堆是如何实现的,如何用数组表示? 5.小顶堆的删除.插入操作是如何进行的? 6.PriorityQueue…
今天来介绍一下容器类中的另一个哈希表———>LinkedHashMap.这是HashMap的关门弟子,直接继承了HashMap的衣钵,所以拥有HashMap的全部特性,并青出于蓝而胜于蓝,有着一些HashMap没有的特性. 接下来就一起来看看这个关门弟子到底有多大能耐. 本文将从以下几点对LinkedHashMap进行介绍: 1.LinkedHashMap简介与简单使用 2.LinkedHashMap的结构以及与HashMap的对比 3.LinkedHashMap的插入和删除 4.LinkedH…
今天要介绍的是List接口中最常用的实现类——ArrayList,本篇的源码分析基于JDK8,如果有不一致的地方,可先切换到JDK8后再进行操作. 本篇的内容主要包括这几块: 1.源码结构介绍 2.源代码展示 3.要点说明 4.优缺点说明 一.源码结构介绍 ArrayList的源码跟之前的接口源码比起来,那可就不能同日而语了,一千多行代码,如果直接看的话确实有些费劲,但仔细看看就会发现,其实大致结构是这样的: 其中包含了好四个内部类:     ArrayListSpliterator:Array…
Java中有很多个Timer,常用的有两个Timer类,一个java.util包下的Timer,一个是javax.swing包下的Timer,两个Timer类都有用到回调机制.可以使用它在到达指定时间间隔后发出通知,例如程序中有一个时钟,就可以每秒请求发送一个通知,以便更新时间显示.那么怎样通知Timer去完成我们的任务呢?在其他语言中,可以提供一个函数名,然后定时器周期性的调用它,但Java使用的是面向对象编程的思想,将某个类的对象传递给定时器,然后定时器再调用这个对象的方法,由于对象能携带的…
今天来看看另一个更加神奇的类--匿名内部类. 就像它的名字表示的那样,这个类是匿名的,用完之后,深藏功与名,就像扫地僧那样默默潜藏于深山之中.匿名内部类不仅没有名字,连class关键字都省掉了,而且匿名内部类必须继承于某个类或者实现某个接口,长的就像这样: new 父类(参数列表)|实现接口() { //匿名内部类的内部定义 } 来看一个栗子: public abstract class Human { public abstract void walk(); } 这是一个抽象类,如果使用匿名内…